取消定义类似函数的宏

osg*_*sgx 14 c-preprocessor

C/C++中有两种类型的宏:

 #define ABC   /* usual */
Run Code Online (Sandbox Code Playgroud)

UND

 #define FUNC(a)  /*function-like*/
Run Code Online (Sandbox Code Playgroud)

但是我怎么能取消他们呢?

更新:那么"不变的宏"和"类似函数的宏"之间没有区别吗?

In *_*ico 19

#undef ABC
#undef FUNC
Run Code Online (Sandbox Code Playgroud)

#undef"取消"以前的#define.效果就好像您从未有过#define特定标识符的前一个.请注意,#defines不尊重范围,因此最好只在需要时使用它们.

另请注意,如果一个宏标识符使用"通常"语法而另一个使用"类似函数"语法则无关紧要.#define ABC并且#define ABC(A)都定义了一个名为的宏ABC.如果你有两个,没有#undef其中一个,最新的一个"覆盖"另一个.(如果发生这种情况,某些编译器可能会发出警告.)

  • 大声笑.我知道这会发生:-) (2认同)

Job*_*Job 12

#undef ABC
#undef FUNC
Run Code Online (Sandbox Code Playgroud)

  • 相隔2秒.如果这是一场比赛,你将成为胜利者.,p (2认同)
  • 西部最快的枪问题的另一个案例:http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem ;-) (2认同)
  • 我投票给你们因为*我无法决定*!:-) (2认同)