我知道this SO question和this SO question。在這個新穎的元素 是在它的焦點在Xcode,並在其使用 方括號去引用void指針。取消引用Xcode上的void *警告
下面的程序與在Xcode 4.5.2沒有警告編譯,編譯 與GCC 4.2警告,即使我沒有Visual Studio的 現在,我記得那會認爲這是一個編譯器 錯誤,並且MSDN和Internet同意。
#include <stdio.h>
int main(int argc, const char * argv[])
{
int x = 24;
void *xPtr = &x;
int *xPtr2 = (int *)&xPtr[1];
printf("%p %p\n", xPtr, xPtr2);
}
如果我改變主要以身體的第三行:
int *xPtr2 = (int *)(xPtr + 1);
它編譯與GCC和Xcode中沒有任何警告。
我想知道我怎麼可以把這個沉默到警告或錯誤,就 GDB和尤其的Xcode/LLVM,包括功能主要爲int,但 沒有明確返回任何值的事實(由我認爲的方式 - 牆上做 GDB的伎倆)。
xptr [1] !!!怎麼樣?? xPtr是指向void的指針。不是二維數組。 –
@Anoop Vaidya:我知道這是錯的,Xcode不會,這讓我很煩惱。是的,這不是一個二維數組,但也許你的意思是「二元數組」。我認爲即使我寫了xPtr [0],Visual Studio也會發出一個錯誤,我認爲這是完全可怕的。 – damix911
,因爲它沒有錯..編譯器不知道指針有多大...一個void [] ~~ void * –