使用#ifdef宏不起作用

Ad-*_*vic 0 c c++

我正在使用MACRO来定义变量SUCESS

#ifdef SUCCESS
    #undef SUCCESS
    #define SUCCESS  0
#endif //SUCCESS
Run Code Online (Sandbox Code Playgroud)

但Eclipse编译器给出了我的错误

symbol "SUCCESS" could not be resolved
Run Code Online (Sandbox Code Playgroud)

但如果我写的话

#define SUCCESS  0
Run Code Online (Sandbox Code Playgroud)

它工作正常.为什么会如此.我只能用#ifdef写

Pet*_*ker 6

像这样改写:

#undef SUCCESS
#define SUCCESS 0
Run Code Online (Sandbox Code Playgroud)

这样,无论SUCCESS先前是否已定义,您都可以获得定义.我也删除了#ifdef ... #endif包装器.它不是必需的:#undef如果尚未定义其目标,则忽略它.