空#在宏定义中是什么意思?

时间:2019-02-02 10:03:07

标签: c++ c macros

我有以下宏:

#define F(Args, ...) \
   // macro definition
#
   F(()) // looks like usage?
#undef F

仅包含#的行是什么意思? F(())是否使用了宏?

1 个答案:

答案 0 :(得分:18)

从技术上讲,它不是宏的一部分(宏之前没有续行)。 这是#define指令之后的指令。

#本身称为null directive,它什么也不做(就像注释一样)。

它不再实际有用(除了作为视觉标记),但在史前C语言中,仅当C源文件以指令开头且位于C文件最开头的null指令良好时,才调用预处理器。确保文件已经过预处理(即,以后的指令有效)的方法,而无需以具体的指令开头。