我正在使用MACRO来定义变量SUCESS
#ifdef SUCCESS
#undef SUCCESS
#define SUCCESS 0
#endif //SUCCESS
但Eclipse编译器给出了错误
symbol "SUCCESS" could not be resolved
但如果我写的只是
#define SUCCESS 0
工作正常。为什么会如此。我只能用#ifdef写
答案 0 :(得分:6)
像这样改写:
#undef SUCCESS
#define SUCCESS 0
这样,无论先前是否已定义SUCCESS
,您都可以获得定义。我还删除了#ifdef ... #endif
包装器。不需要:如果尚未定义目标,则忽略#undef
。
答案 1 :(得分:1)
如果在这些预处理指令之前未定义SUCCESS
,则不会定义任何SUCCESS
宏(这是错误)。如果您之前定义SUCCESS
,其值将按预期更改:
#define SUCCESS 1
#ifdef SUCCESS
#undef SUCCESS
#define SUCCESS 0
#endif //SUCCESS
int main(int argc, char *argv[]) {
std::cout << SUCCESS;
return 0;
}
正如您所见here。