我正在尝试进行以下评估:在我的头文件中(定义值可以更改):
#define X ((void *) 0)
在我的功能中:
uint8_t foo() {
uint8_t value = 0;
#if ( X != 0 )
value = 1;
#endif
return value;
}
当我编译代码时,它会引发以下错误:
#57: this operator is not allowed in a constant expression
#58: this operator is not allowed in a preprocessing expression
当我进行操作以查看 DEFINE 是否存在(或不存在)时,它工作正常(#ifdef 或 #if defined(X))。但我想要的是能够在编译时评估 X 的值。我是否缺少任何标志或我需要设置的东西才能使这项工作?我正在使用 Green Hills 编译器。