2011-12-01 12 views
0

gccで無効なアドレスが保証された特別なポインタを使用しようとしています。ここに私が何をしています:特別なポインタ値((void *)1)

#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

エラーは何ですか? – semisight

答えて

3

#defineにセミコロンが含まれていますか(例のように)?そうすれば、代入が可能になりますが、テキスト置換の後に条件文の中にセミコロンがあるため、if文がエラーになります。

3

あなたはあなたのの#define

でセミコロンを定義しているので...

if(data != MY_VALUE_OK) 

が実際に変わる:

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

あなたの明白な誤りがあります定義する必要があります:

#define MY_VALUE_OK ((void*)1) 

これで問題が解決するはずです。

関連する問題