A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zwj2015 中级黑马   /  2015-10-28 21:36  /  530 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

宏定义分类:

(1)不带参数的宏定义

形式: #define 宏名 [宏体]
功能:可以实现用宏体代替宏名
使用实例: #define TRUE 1
作用:程序中多次使用TRUE,如果需要对TRUE的值进行修改,只需改动一处就可以了


(2)带参数的宏: #define 宏名 ( 参数表) [宏体]


宏定义作用:

(1)方便程序的修改

上面的#define TRUE 1就是一个实例

(2)提高程序的运行效率

宏定义的展开是在程序的预处理阶段完成的,无需运行时分配内存,能够部分实现函数的功能,却没有函数调用的压栈、弹栈开销,效率较高

(3)增强可读性


这点不言而喻,当我们看到类似PI这样的宏定义时,自然可以想到它对应的是圆周率常量

(4)字符串拼接

例如:
#define CAT(a,b,c) a##b##c

main()
{
    printf("%d\n" CAT(1,2,3));
    printf("%s\n", CAT('a', 'b', 'c');
}

程序的输出会是:

123
abc


(5)参数转化成字符串

示例:

#defind CAT(n) "abc"#n

main()
{
    printf("%s\n", CAT(15));
}

输出的结果会是
abc15

(6)用于程序调试跟踪
常见的用于调试的宏有,_ L I N E _,_ F I L E _,_ D A T E _,_ T I M E _,_ S T D C _

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马