Linux下获取代码文件名、代码所在行数及日期时间的C程序实现

一、概述
在实际的软件开发项目中,为了方便排查程序问题,要求在日志文件中输出日志信息所在的程序文件名及日志代码所在的行数。此外,某些软件还会要求将程序启动时的日期时间输出到日志文件中,方便跟踪软件运行状况。
本文介绍了Linux下获取代码文件名、代码行数及日期时间的C代码实现。

二、几个标准预定义宏简介
在C语言中,使用几个标准预定义宏,便可轻松实现获取代码文件名、代码行数及日期时间的功能。
这几个宏的定义如下(注意:前后都是两条连续的下划线):

__FILE__:在源文件中插入当前源文件名。
__FUNCTION__:在源文件中插入当前源代码所在函数名。
__LINE__:在源代码中插入当前源代码行号。
__DATE__:在源文件中插入当前的编译日期。
__TIME__:在源文件中插入当前编译时间。

三、C代码实现

/**********************************************************************
* 版权所有 (C)2015, Zhou Zhaoxiong。
*
* 文件名称:FileNameAndLine.c
* 文件标识:无
* 内容摘要:打印输出信息所在的代码文件名、所在的行数及日期时间
* 其它说明:无
* 当前版本:V1.0
* 作    者:Zhou Zhaoxiong
* 完成日期:20150511
*
**********************************************************************/
#include <stdio.h>

// 重定义数据类型
typedef signed   int    INT32;
typedef unsigned char   UINT8;

/**********************************************************************
* 功能描述:主函数
* 输入参数:无
* 输出参数:无
* 返 回 值:无
* 其它说明:无
* 修改日期        版本号     修改人            修改内容
* -------------------------------------------------------------------
* 20150511        V1.0     Zhou Zhaoxiong        创建
***********************************************************************/
INT32 main()
{
    UINT8 szContentBuf[256] = {0};

    snprintf(szContentBuf, sizeof(szContentBuf)-1, "This log is in [%s], [%s], and lineno is [%d], currenttime is [%s %s].\n", __FILE__, __FUNCTION__, __LINE__, __DATE__, __TIME__);
    printf(szContentBuf);   // 将消息输出

    return 0; 
}

四、文件编译及运行结果
在Linux下执行“gcc -g -o FileNameAndLine FileNameAndLine.c”命令,生成“FileNameAndLine”。然后再执行“FileNameAndLine”命令,程序运行结果如下:

[zhou|/home/zhou/zhouzx/test] gcc -g -o FileNameAndLine FileNameAndLine.c
[zhou|/home/zhou/zhouzx/test] FileNameAndLine
This log is in [FileNameAndLine.c], [main], and lineno is [34], currenttime is [May 18 2015 10:35:55].

本人微信公众号:zhouzxi,请扫描以下二维码:
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值