预处理运算符# #为宏扩展提供了一种连接实际变元的手段。如果替换文本中的参数用 # #相
连,那么参数就被实际变元替换, # #与前后的空白符被删除,并对替换后的结果重新扫描。例
如,下面定义的宏p a s t e用于连接两个变元:
#define paste( front, back ) front ## back
从而宏调用paste(name, 1)的结果是建立单词n a m e 1。
摘自 K&R 的c语言 4.11
希望对你有所帮助
比如说我定义一个宏:
#define DECLARE_DYNAMIC(class_name) \
public:
static CRuntimeClass class##class_name; \
virtual CRuntimeClass* GetRuntiemClass() coonst;
出现的宏定义之中的##,用来告诉编译器,把两个字符串系在一起。如果你这么使用此宏:
DECLARE_DYNAMIC(CView)
编译器前置处理器为你做出的代码是:
public:
static CRuntimeClass classCView;
virtual CRuntimeClass* GetRuntiemClass() coonst;
楼主比较下区别。
##在C/C++中具有连接字符串的作用。
#include
表示预编译命令
即则命令由编译完成