宏定义一些内容 分类: H_HISTORY 2013-02-07 23:20 585人阅读 评论(0) 收藏
2013-02-07 23:20
381 查看
预处理指令
大多数预处理指令都属于下面3种之一:
(1)宏定义
(2)文件包含
(3)条件编译
其它还有一些不常用的#error #line和pragma。
宏定义
(1)简单的宏
(2)带参数的宏
对于一个宏要在哪里加圆括号有两条规则
(1)如果宏的替换列表中有运算符,那么始终要将替换列表放在括号中间
若没有括号,则变成
预定义宏
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
以上为C89的预定义宏,C99还有新增的。
输出:
[lujinhong@lujinhong CProgrammingAModernApproach]$ gcc macro_test.c
[lujinhong@lujinhong CProgrammingAModernApproach]$ ./a.out
This program is compile on Feb 7 2013 at 23:13:10.
This is the line 5 in file macro_test.c
大多数预处理指令都属于下面3种之一:
(1)宏定义
(2)文件包含
(3)条件编译
其它还有一些不常用的#error #line和pragma。
宏定义
(1)简单的宏
#define PI 3.141592654
(2)带参数的宏
#define MAX(x,y) ((x)>(y)?(x):(y))宏定义中的圆括号
对于一个宏要在哪里加圆括号有两条规则
(1)如果宏的替换列表中有运算符,那么始终要将替换列表放在括号中间
#define TWO_PI (2*3.141592654)否则,考虑以下情况:
x=360/TWO_PI
若没有括号,则变成
x=360/2*3.141592654(2)如果宏有参数,每个参数每次在替换列表中出现时都要放在原括号中
#define SCALE(x) ((x)*10)
预定义宏
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
以上为C89的预定义宏,C99还有新增的。
#include <stdio.h> int main(void){ printf("This program is compile on %s at %s.\n", __DATE__, __TIME__); printf("This is the line %d in file %s\n", __LINE__, __FILE__); return 0; }
输出:
[lujinhong@lujinhong CProgrammingAModernApproach]$ gcc macro_test.c
[lujinhong@lujinhong CProgrammingAModernApproach]$ ./a.out
This program is compile on Feb 7 2013 at 23:13:10.
This is the line 5 in file macro_test.c
相关文章推荐
- libc glibc glib 的关系 分类: H_HISTORY 2013-02-07 22:22 717人阅读 评论(0) 收藏
- 指针与数组关联导致的一些现象 分类: H_HISTORY 2013-02-11 20:14 516人阅读 评论(0) 收藏
- 枚举作为整数 分类: H_HISTORY 2013-02-08 11:22 576人阅读 评论(0) 收藏
- 【转载】解决CHM文件无法显示内容的办法 分类: 杂项 2014-12-06 16:09 61人阅读 评论(0) 收藏
- 使用urllib2解析html内容,并正常显示中文的方法 分类: python Module 2013-10-31 17:30 294人阅读 评论(0) 收藏
- JavaScript中的一些细节 分类: C1_HTML/JS/JQUERY 2014-08-05 16:45 384人阅读 评论(0) 收藏
- c语言中<stdbool.h>的使用 分类: H_HISTORY 2013-02-03 21:46 1416人阅读 评论(0) 收藏
- 重要的开源资源及50个c/c++源代码网站 分类: H_HISTORY 2013-02-06 21:52 1047人阅读 评论(0) 收藏
- errno的基本用法 分类: H_HISTORY 2013-02-18 21:49 1840人阅读 评论(0) 收藏
- 菜单之一:Menu基础内容 分类: H1_ANDROID 2013-11-03 00:23 906人阅读 评论(0) 收藏
- C语言内存分配时间 分类: H_HISTORY 2013-02-11 10:51 1432人阅读 评论(3) 收藏
- 杀进程的一些方法 分类: .NET 2012-02-23 11:08 455人阅读 评论(0) 收藏
- C语言声明数组变量时,在什么情况下,可不指定数组大小 分类: H_HISTORY 2013-02-11 11:03 694人阅读 评论(0) 收藏
- 【solr专题之四】在Tomcat 中部署Solr4.x 分类: H_HISTORY 2014-07-17 16:08 1286人阅读 评论(0) 收藏
- 输出文件中不包含指定的多个排除词的行内容(双重遍历) 分类: python 小练习 2013-11-22 15:20 605人阅读 评论(0) 收藏
- 【C#小知识】C#中一些易混淆概念总结(七)---------解析抽象类,抽象方法 分类: C# 2014-02-10 01:55 1675人阅读 评论(0) 收藏
- ARM芯片学习内容规划及ARM开发环境的搭建 分类: 嵌入式开发学习 2014-06-06 14:17 278人阅读 评论(0) 收藏
- grep 在文件中查找指定的内容,并输出行号 及 获取指定行号的内容 分类: open()文件读写 ubuntu 2014-02-26 16:37 2156人阅读 评论(0) 收藏
- 用户输入内容长度限制的异常 分类: python异常 2013-06-24 10:48 335人阅读 评论(0) 收藏
- Segment fault及LINUX core dump详解 分类: H_HISTORY 2013-02-06 11:03 1656人阅读 评论(1) 收藏