在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