我有以下宏:
#define F(Args, ...) \
// macro definition
#
F(()) // looks like usage?
#undef F
仅包含#
的行是什么意思? F(())
是否使用了宏?
答案 0 :(得分:18)
从技术上讲,它不是宏的一部分(宏之前没有续行)。
这是#define
指令之后的指令。
#
本身称为null directive,它什么也不做(就像注释一样)。
它不再实际有用(除了作为视觉标记),但在史前C语言中,仅当C源文件以指令开头且位于C文件最开头的null指令良好时,才调用预处理器。确保文件已经过预处理(即,以后的指令有效)的方法,而无需以具体的指令开头。