C语言预定义宏(__LINE__、__DATE__等)浅析

原创 2016年05月30日 21:54:00
ANSIC标准定义了以下5种可供C语言使用的预定义宏: 
__LINE__ 在源代码中插入当前源代码行号 
__FILE__ 在源代码中插入当前源代码文件名 
__DATE__ 在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕 
__TIME__ 在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕 
__STDC__ 当要求程序严格遵循ANSIC标准时该标识符被赋值为1。 

标识符__LINE__和__FILE__通常用来调试程序; 
标识符__DATE__和__TIME__通常用来在编译后的程序中加入一个时间标志,以区分程序的不同版本; 

当编译器严格遵循ANSIC标准时,标识符__STDC__就会被赋值为1。

如果编译器不遵循标准时,则可能仅支持以上宏名中的几个,或根本不支持;不同的编译器可能会提供其他预定义的宏名。

以下是在Linux C 中的代码及其在gcc编译器中的执行效果:

源代码文件名test.c

#include<stdio.h>

int main()
{
	printf("%d\n",__LINE__);//显示所在行号
	printf("%s\n",__func__);//显示所在函数
	printf("%s\n",__TIME__);//显示当前时间
	printf("%s\n",__DATE__);//显示当前日期
	printf("%s\n",__FILE__);//显示所处文件名,在源代码中插入当前源代码文件名
	printf("%d\n",__STDC__);//编译器遵循ANSI C标准时该标识被赋值为1;
	return 0;
}
编译执行结果如下:
[root@localhost Test]# gcc test.c 
[root@localhost Test]# ./a.out
5
main
21:25:52
May 30 2016
test.c
1



版权声明:本文为博主原创文章,未经博主允许不得转载。

linux 中C语言便于调试的宏定义编写及 __FILE__,__FUNCTION__, __LINE__参数使用

在linux编程中,当文件数量变的众多之后,使用gdb调试就是一场灾难。因此在程序中加入合理的打印信息,定位错误出现的文件名,函数名,行号等信息,能更高效的定位到问题的所在。      下面定义了宏...
  • edonlii
  • edonlii
  • 2013年01月10日 20:43
  • 7248

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

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

C语言宏定义和宏定义函数

要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。   在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成...
  • bytxl
  • bytxl
  • 2015年05月26日 14:51
  • 7773

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

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

标准C语言的预定义宏

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

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

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

C语言中预定义宏的应用

__LINE__                       在源代码中插入当前源代码行号         __FILE__                       在源代码中插入当前源代码文...
  • callinglove
  • callinglove
  • 2012年08月04日 14:00
  • 1353

预定义宏__LINE__解析

Author: chenzhufly Email: chenzhufly@126.com 2010-05-04     这篇我将来玩玩多线程操作,体会一下其中的乐趣。实际上这也不能严...
  • armauk
  • armauk
  • 2014年03月31日 18:01
  • 389

C语言中的__FILE__、__LINE__和__func__等预定义跟踪调试

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

编译器中和64位编程有关的预定义宏

本文对分别测试VC,MinGW,GCC 三种编译器,在32位和64位模式(共6种情况下),和64位编程有关的与预定义宏的值。对跨平台编程具有参考意义。...
  • liangbch
  • liangbch
  • 2014年06月30日 19:29
  • 12791
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言预定义宏(__LINE__、__DATE__等)浅析
举报原因:
原因补充:

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