关于标准C语言的预定义宏
来源:互联网 发布:端口23连接失败解决 编辑:程序博客网 时间:2024/06/11 01:28
标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。下面预定义宏表,被我抄了下来。
__LINE__ 当前程序行的行号,表示为十进制整型常量__FILE__ 当前源文件名,表示字符串型常量__DATE__转换的日历日期,表示为Mmm dd yyyy 形式的字符串常量,Mmm是由asctime产生的。__TIME__ 转换的时间,表示"hh:mm:ss"形式的字符串型常量,是有asctime产生的。(asctime貌似是指的一个函数)__STDC__ 编辑器为ISO兼容实现时位十进制整型常量__STDC_VERSION__ 如何实现复合C89整部1,则这个宏的值为19940SL;如果实现符合C99,则这个宏的值为199901L;否则数值是未定义__STDC_EOBTED__ (C99)实现为宿主实现时为1,实现为独立实现为0__STDC_IEC_559__ (C99)浮点数实现复合IBC 60559标准时定义为1,否者数值是未定义__STDC_IEC_559_COMPLEX__ (C99)复数运算实现复合IBC 60559标准时定义为1,否者数值是未定义__STDC_ISO_10646__ (C99)定义为长整型常量,yyyymmL表示wchar_t值复合ISO 10646标准及其指定年月的修订补充,否则数值未定义
实现还经常定义其他宏用于传递环境信息,如进行程序编译工作的计算机类型。具体定义哪些宏值是由实现决定的,但是UNIX实现习惯上预定义unix。与内置宏不同的是,这些宏可以取消定义。标准C语言要求特定实现的宏名一下划线开头,加上大写字母或另一个下划线(unix宏不符合这个要求)。
实际运用,例:预定义宏可以在魔种错误消息中使用:if(n|=m)fprintf(stderr,"Internal error;line %d,file 5s\n",__LINE__,__FILE__);其他实现定义的宏可以分隔主机或特定目标代码。例如:Microsoft Visual C++定义__WIN32为1:#ifdef __WIN32 /*Code for Win32 environment*/#endif__STDC__与__STDC_VERSION__宏可以编写与标准C语言和非标准C实现敬爱内容的程序:#ifdef __STDC__ /*Some version of Standard C*/#if defined(__STDC__VERSION__)&&__STDC_VERSION__>=199901L /* C99 */#elif defined(__STDC_VERSION__)&&__STDC_VERSION__>=199409L /*C89 and Amendment 1 */#else /* C89 but not Amendment 1*/#endif#else /* __STDC__not defined */ /*Not Standard C*/endif
0 0
- 关于标准C语言的预定义宏
- 关于标准C语言的预定义宏
- 标准C语言的预定义宏
- C语言标准预定义的宏
- C 语言标准中一些预定义的宏
- C标准预定义实用的宏
- 标准C语言中的预定义宏(部分)
- C标准预定义宏
- C标准预定义宏
- C语言中预定义的宏
- 12-2-14关于ANSIC标准的预定义宏
- 关于c语言中几种特殊预定义符号的使用
- C标准中一些预定义的宏
- C标准中一些预定义的宏
- C标准中一些预定义的宏
- C标准中一些预定义的宏
- C标准中的一些预定义的宏
- C标准中一些预定义的宏
- 每天学一点linux(8)--查看文件内容
- 文章收录机制探讨
- SNAP建立索引的时候出现问题
- 抽象数据类型的表示和实现
- 写给那时自己
- 关于标准C语言的预定义宏
- ROS_RGB-D SLAM学习笔记--室内环境测试
- poj3468 A Simple Problem with Integers 基础线段树or树状数组
- const限定符最基本的
- Socket
- BFS 迷宫的最短路径
- CEF加载PPAPI插件
- 微信开发对接
- 《笨办法学Python》 第8课手记