您的位置:首页 > 编程语言 > C语言/C++

C语言宏定义

2015-12-07 16:31 225 查看
#include<stdio.h>
#include<unistd.h>

/* #是"字符串化"的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串 */
#define LOG_ERROR(err) fprintf(stderr, #err)

/* "##"是一种分隔连接方式,它的作用是先分隔,然后进行强制连接. */
#define test(type, name) type type##_##name
#define test2(type, name) type type_##type##_name_##name

void main(void)
{
test(int, num);
test2(int, num);
LOG_ERROR(1234);
}


以上代码段 test.c 经过宏展开后的代码如下:

/* gcc -E test.c */

void main(void)
{
int int_num;
int type_int_name_num;
fprintf(stderr, "1234");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: