特殊指针值((void *)1)

时间:2011-12-01 02:19:42

标签: pointers gcc

我正在尝试使用带有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编译的旧代码。

2 个答案:

答案 0 :(得分:3)

你的#define是否包含分号(就像你的例子一样)?如果允许分配工作,但if语句会出错,因为在文本替换之后,条件内会有一个分号。

答案 1 :(得分:3)

您已使用#define

定义了分号

所以...

if(data != MY_VALUE_OK)

实际上变成了:

if(data != ((void*)1);)

那里有一个明显的错误

您的定义应该是:

#define MY_VALUE_OK ((void*)1)

那应该可以解决你的问题:)