ANSIC标准定义的6种预定义宏
来源:互联网 发布:淘宝二手 雷蛇黑寡妇 编辑:程序博客网 时间:2024/05/16 15:07
From: http://biancheng.dnbcw.info/c/277439.html
ANSIC标准定义了以下6种可供C语言使用的预定义宏:
__LINE__ 在源代码中插入当前源代码行号
__FILE__ 在源代码中插入当前源代码文件名
__DATE__ 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕
__TIME__ 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕
__STDC__ 当要求程序严格遵循ANSIC标准时该标识符被赋值为1。
__cplusplus
标识符__LINE__和__FILE__通常用来调试程序;
标识符__DATE__和__TIME__通常用来在编译后的程序中加入一个时间标志,以区分程序的不同版本;
这四个都是预编译宏,不是包含在头文件中的
__FILE__是当前编译的文件的文件名 是一个字符串
__TIME__是当前编译的文件的编译时间 格式是hh:mm:ss 是字符串
__DATE__是当前编译的文件的编译日期 格式是Mmm:dd:yyyy 是字符串
__LINE__是调用该宏语句所在的行数,是个十进制数
用在宏定义中
譬如:
#define TEST (__FILE__" "__TIME__) /*这个括号没有也行的*/
int main(void)
{
printf(TEST);
return 0;
}
假如该代码的文件名叫console.cpp
那么会输出文件名加编译时间
.\console.cpp 21:34:22
==========================================
C程序:
- #include <stdio.h>
- int main()
- {
- char s1[] = __DATE__;
- char s2[] = __TIME__;
- printf("s1=[%s]\n", s1);
- printf("s2=[%s]\n", s2);
- return 0;
- }
编译运行结果:
- [zcm@c #6]$cat -v a.c
- #include <stdio.h>
- int main()
- {
- char s1[] = __DATE__;
- char s2[] = __TIME__;
- printf("s1=[%s]\n", s1);
- printf("s2=[%s]\n", s2);
- return 0;
- }
- [zcm@c #7]$make
- gcc -o a a.c
- [zcm@c #8]$./a
- s1=[Apr 24 2014]
- s2=[17:21:26]
- [zcm@c #9]$./a
- s1=[Apr 24 2014]
- s2=[17:21:26]
- [zcm@c #11]$./a
- s1=[Apr 24 2014]
- s2=[17:21:26]
可见,每次程序运行时,输出的都是同一个时间,即编译时间!
- ANSIC标准定义的6种预定义宏
- ANSIC标准定义的6种预定义宏
- ANSIC标准提供的预定义宏
- ANSIC标准6个预定义宏
- 12-2-14关于ANSIC标准的预定义宏
- ANSIC几种特殊的标准定义(__FILE__、__LINE__、__STDC__···)
- ANSIC几种特殊的标准定义(__FILE__、__LINE__、__STDC__···)
- ANSIC标准定义的C语言预处理指令总结
- 标准预定义宏
- 标准C语言的预定义宏
- C标准预定义实用的宏
- C语言标准预定义的宏
- 预定义,宏定义
- C定义的预定义宏
- ANSIC 的标准I/O函数
- 什么是标准预定义宏?
- 什么是标准预定义宏
- C标准预定义宏
- UGUI下UI的点击和3D的点击与拖拽
- linux c 文件锁应用详解汇总
- 倒排文件(二):多特征倒排文件
- 如何学好java
- 征服 Mongodb 之 主从复制&集群复制
- ANSIC标准定义的6种预定义宏
- mysql使用说明
- jquery form表单重置
- Nginx 实战(一) 集群环境搭建
- 承志医院管理系统项目解析 登录(一)
- 改变内存对齐系数的函数
- could not initialize proxy - no Session
- 国内从事红外热成像的公司
- 如何开发一个java开源框架-----Jvn框架之实现浏览器传参后台转成Bean(第四)