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"); }
相关文章推荐
- 【OpenCV】How to Use Tesseract with C++ or OpenCV
- 第11周项目1 二叉树算法验证
- C++正则表达式
- c++ primer plus 第六章变成练习 第2题
- 用C++解决数学类问题的练习
- C++中返回值为对象详解
- ADO Recordset AddNew一直抛异常
- C++中sort()函数的用法
- errno.h
- c++ primer plus 第六章变成练习 第一题
- C语言成长学习题(十二)
- C++ 资源大全
- 黑马程序员——C语言基础---结构体、枚举
- C++ 类在继承中虚函数、纯虚函数、普通函数,三者的区别
- C语言成长学习题(十一)
- c++ tuple的基本操作
- C++ using关键字作用总结
- C语言成长学习题(十)
- c++ lambda表达式捕获变量参数
- 黑马程序员——C语言基础---又见指针