我正在尝试使用带有gcc保证无效地址的特殊指针。这是我的工作:
#define MY_VALUE_OK ((void*)1);
...
int* data;
...
void* d = MY_VALUE_OK;
if( data != ((void*)1) ) // compiles ok
if( data != d ) // compiles ok
if( data != MY_VALUE_OK ) // error!
printf( " %d", *data );
有什么想法吗? 理想情况下,我想将此指针定义为类中的静态const。 顺便说一句,这是我以前使用Microsoft Visual Studio编译的旧代码。
答案 0 :(得分:3)
你的#define是否包含分号(就像你的例子一样)?如果允许分配工作,但if语句会出错,因为在文本替换之后,条件内会有一个分号。
答案 1 :(得分:3)
您已使用#define
定义了分号所以...
if(data != MY_VALUE_OK)
实际上变成了:
if(data != ((void*)1);)
那里有一个明显的错误
您的定义应该是:
#define MY_VALUE_OK ((void*)1)
那应该可以解决你的问题:)