有五种用法,含有参数和不含参数,行尾都不用加分号
-
#define <标识符> [<替换列表>]
//类似于全局变量了 //如果其他文件没有包含定义宏的文件,则在宏定义的位置结束,如果有包含,则到包含的文件结束 #define LARGEST_NUM 1000
-
#define <标识符> ([参数列表]) ([替换列表])
//注意,替换列表里面必须加上括号,否则可能会导致歧义 //当然,替换列表也可以添加中括号,就看自己的用法了{} #define add (a,b) (a+b)
-
#ifdef #else #ifndef #endif 组合起来可以进行条件编译
//#ifdef以及#ifndef和#endif 是成对出现的 #ifdef debug ... #else ... #endif
-
文件包含,在多重引用的情况下,很容易搞混一个h文件是否已经包含。如果不确定,可以使用如下语句进行包含
#ifndef _HEADFILE_ #define _HEADFILE_ ... ... #endif
-
更多的替换 ##,#@,#
##
//作用是连接x和y #define Conn(x,y) x##y ... int a=Conn(123,456); //那么a=123456 string s=Conn(123,456); //那么s="123456"
#@
//作用是把x转换为char并返回 #define ToChar (x) #@x ... //x不能超过4个字符,否则就会报超长错误 char a = ToChar(1)
#
//作用是把x转换为string,并返回, #define ToString (x) #x ... //返回的结果是"123456" string s= ToString(123456)