在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 %pn", xPtr, xPtr2);
}

如果我将主体的第三行更改为:

int *xPtr2 = (int *)(xPtr + 1);

它编译时GCC和Xcode都没有警告。

我想知道如何在GDB, 特别是 Xcode / LLVM中将这种沉默变为警告或错误,包括main函数为int,但不显式返回任何值的事实(顺便说一句,我想 -在GDB上)。


根本没有错......

编译器不知道指针有多大...... void [] ~~ void *
这就是为什么char *用作字符串需要被终止

你不能打开一个警告,因为它不可能在编译时确定'指针的内存指针的大小'

void *v = nil;
*v[1] = 0 //invalid

void *v = malloc(sizeof(int)*2);
*v[1] = 0 //valid

*注意在SO上键入内容 - 对于任何非工作代码抱歉

链接地址: http://www.djcxy.com/p/35381.html

上一篇: Dereferencing void* warnings on Xcode

下一篇: Xcode Bus Error When Compiling