C标准中的一些预定义宏

原创 2007年10月12日 12:09:00
 昨天写代码时需要在代码获取当前编译时间,从而可动态地作为版本信息,因此用到了C标准中的一些预定义的宏。在此将C标准中定义的几个宏一并总结一下:

 

__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字,如May 27 2006)
__FILE__ 代表当前源代码文件名的字符串文字 ,包含了详细路径,如G:/program/study/c+/test1.c
__LINE__ 代表当前源代码中的行号的整数常量
__TIME__ 源文件编译时间,格式微“hh:mm:ss”,如:09:11:10;
__func__ 当前所在函数名,在编译器的较高版本中支持
__FUNCTION__ 当前所在函数名
 

  对于__FILE__,__LINE__,__func__,__FUNCTION__ 这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数。
  而对于__DATE__,__TIME__则可以获取编译时间,如如下代码通过宏获取编译时间,并通过sscanf()从中获取具体的年月日时分秒数据,可在代码中做相应使用。我的代码中是根据此数据作为版本标识,并依此判断哪个版本新些及是否需要升级。
char * creationDate   = __DATE__ ", " __TIME__;
sscanf(creationDate, "%s %d %d, %d:%d:%d", month, &day, &year, &hour, &min, &sec);

[C/C++] 显示各种C/C++编译器的预定义宏(C11标准、C++11标准、VC、BCB、Intel、GCC)

转载自来源: [C/C++] 显示各种C/C++编译器的预定义宏(C11标准、C++11标准、VC、BCB、Intel、GCC) http://dev.gameres.com/Program...
  • gatieme
  • gatieme
  • 2016年04月16日 23:08
  • 2553

33.C语言宏定义和预处理

33.1.源码到可执行程序过程 33.2.预处理的意义及编程应用 33.3.头文件包含 33.4.注释和条件编译 33.5.宏定义的规则和使用解析 33.6.带参宏和带参函数的区别 33.7.内联函数...
  • Rston
  • Rston
  • 2016年04月09日 14:55
  • 1329

预处理:头文件、宏定义、条件编译

一:预处理过程         预处理器将进行宏替换、条件编译和包含指定的文件。以“#”开头的命令行就是预处理器处理的对象。这些命令行可以出现在任何地方,其作用可延续到所在翻译单元的末尾。每一行都会单...
  • gqtcgq
  • gqtcgq
  • 2015年08月30日 21:13
  • 1840

C标准中的一些预定义宏对调试程序有很大帮助

预处理命令#pragma和预定义宏 一、C预定义宏 C标准指定了一些预定义宏,编程中常常用到。 __DATE__     进行预处理的日期 __FILE__     代表当前源代码文件名的字符...
  • lizhitao
  • lizhitao
  • 2013年06月29日 21:58
  • 893

c/c++标准预定义宏

[转载]c/c++标准预定义宏2009-08-22 14:40http://www.cnblogs.com/sevencat/archive/2004/06/10/14872.html一、标准预定义宏...
  • liufei_learning
  • liufei_learning
  • 2011年03月15日 10:51
  • 2027

C标准预定义宏 -- 需要整理一下

ANSI C标准中有几个标准预定义宏:__FILE__     __DATE__   __TIME___    __LINE__   等 __LINE__:在源代码中插入当前源代码行号; __FI...
  • zqlovlg
  • zqlovlg
  • 2014年04月13日 14:59
  • 659

[C/C++] 显示各种C/C++编译器的预定义宏(C11标准、C++11标准、VC、BCB、Intel、GCC)

转载自来源: [C/C++] 显示各种C/C++编译器的预定义宏(C11标准、C++11标准、VC、BCB、Intel、GCC) http://dev.gameres.com/Program...
  • gatieme
  • gatieme
  • 2016年04月16日 23:08
  • 2553

标准C语言的预定义宏

转载自:http://blog.csdn.net/hrbeuwhw/article/details/7484432
  • liujiaoyage
  • liujiaoyage
  • 2014年06月27日 17:06
  • 449

关于标准C语言的预定义宏

标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。下面预定义宏表,被我抄了下来。 __LINE__  ...
  • hrbeuwhw
  • hrbeuwhw
  • 2012年04月21日 15:36
  • 4360

关于标准C语言的预定义宏

标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。下面预定义宏表,被我抄了下来。__LINE__ 当前...
  • mouse1598189
  • mouse1598189
  • 2016年01月08日 21:50
  • 711
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C标准中的一些预定义宏
举报原因:
原因补充:

(最多只允许输入30个字)