我有如下宏:
#define F(Args, ...) \
// macro definition
#
F(()) // looks like usage?
#undef F
仅包含 #
的那一行是什么意思?F(())
是否是宏的用法?
仅包含 #
的那一行是什么意思?F(())
是否是宏的用法?
从技术上讲,这并不是宏的一部分(没有续行符在此之前)。
这是一个指令,在#define
指令之后。
单独一行的#
被称为空指示符,它什么也不做(与注释一样)。
虽然在现代C语言中已经没有实际用途(除了作为视觉标记),但在史前时期的C语言中,预处理器只有在以指令开始的C源文件中才会被调用,而在C文件的最开始放置一个空指示符是确保该文件被预处理(即后续的指令能够工作)而不必以具体指令开头的好方法。