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

What does an empty # mean in a macro definition?

本文关键字:是什么 意思 宏定义      更新时间:2023-10-16

>我有以下宏:

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

仅包含#的行是什么意思?F(())是宏的用法吗?

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

#在它自己的行上被称为 null 指令,它什么都不做(和注释一样好)。

它不再实际有用(除了作为视觉标记),但在史前 C 中,只有在 C 源文件以指令开头时才调用预处理器,并且放置在 C 文件开头的 null 指令是确保文件被预处理的好方法(即,后来的指令有效)而不从具体指令开始。