Macros 在定义一个未定义的宏之前,有什么理由先定义它吗?

Macros 在定义一个未定义的宏之前,有什么理由先定义它吗?,macros,c-preprocessor,Macros,C Preprocessor,在我正在进行的项目中,我在C头文件中遇到了以下几行: #ifndef SOME_CONSTANT #undef SOME_CONSTANT #define SOME_CONSTANT "SOME_STRING" #endif // SOME_CONSTANT 据我所知,#unde将无效,因为宏未定义。所以它可以重写为 #ifndef SOME_CONSTANT #define SOME_CONSTANT "SOME_STRING" #

在我正在进行的项目中,我在C头文件中遇到了以下几行:

#ifndef SOME_CONSTANT
    #undef SOME_CONSTANT
    #define SOME_CONSTANT          "SOME_STRING"
#endif // SOME_CONSTANT
据我所知,
#unde
将无效,因为宏未定义。所以它可以重写为

#ifndef SOME_CONSTANT
    #define SOME_CONSTANT          "SOME_STRING"
#endif // SOME_CONSTANT

这更简单,(对我来说)更容易理解。照原样写有什么好处吗?

你说得对,
#unde
在那里是毫无意义的。我的猜测是,有人从某个地方复制粘贴了此块,该地方的条件是基于先前定义的符号的(不符合要求的)值,在原始情况下,在创建该符号的新(符合要求的)定义之前,需要使用
#undef
。然后他们修改了条件,但忘记删除
#undef
@ottomeister谢谢你的建议。您是否想添加一个示例以使其更清晰,并将其转化为答案?:-)