重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
宏不是函数,顶多可以用有参宏,启手但宏绝不是函数,宏,说白了,它的纳孝作用就是代码字面洞旁稿上的替换
成都创新互联公司专注于企业营销型网站建设、网站重做改版、通道网站定制设计、自适应品牌网站建设、HTML5建站、成都商城网站开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为通道等各大城市提供网站开发制作服务。
#define FUN() “ !C*!D+A*!B*!D+!A*B*!C+A*B*C*D ”
char *str=FUN();
就完全等价于char *str=“ !C*!D+A*!B*!D+!A*B*!C+A*B*C*D ” ;
宏定义 #define N 100
是预编译命令亩举,它的意思是 对下面程序中出现的 ( token) N 作字符替代,把所有的
N 用 100 替代后 再进行 编译。 这里的 100 是一串字符, 而不叫 “字符串”早亩,
字符串 是 术语,指的是 c/c++ 中的 “字符串常量”,即双引号括起来的一串字符 加陆耐森 一个不可见的 字符串结束符 构成的 对象。
根据编译环境,有如下方式:
1 部分编译器中,支持__FUNCTION__或__func__宏。该宏为编译器定义,值为被调用函数的函数名转换成的字符串。如在func()中调用__FUNCTION__,则该宏的值为"func"。
2 如果编译器不支持上述宏名,那么需要手动添加宏。可以有如下两种方式:
a. 直接定义对应字符串,如
#define FUNC_NAME "func"
字符串中的直接写明。
b. 统一函数转换。利用宏定义的#操作,可蠢汪以实现标识符向字符串的简棚转换。
#define FUNC_NAME(x) #x
这时调用FUNC_NAME(func)就等拦档则效于"func"。
用拼接迟慧符可以做到
#define STRING(arg) "AAAAAAA"##arg##"BBBBBBBBBB"
但码弊答arg必卜凯须是个常量,不能是变量