问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C中_FILE_和_LINE_怎么用

发布网友 发布时间:2022-05-15 01:58

我来回答

5个回答

热心网友 时间:2023-11-22 20:57

这是编译器内置宏,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。例如:

printf("FILE: %d,  LINE: %d, %s/n", "__FILE__, __LINE__,  "这里写上相关信息");


ANSI C标准中几个标准预定义宏:

__LINE__:在源代码中插入当前源代码行号;

__FILE__:在源文件中插入当前源文件名;

__DATE__:在源文件中插入当前的编译日期

__TIME__:在源文件中插入当前编译时间;

__STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1;

__cplusplus:当编写C++程序时该标识符被定义。

热心网友 时间:2023-11-22 20:58

注意,是双下划线,而不是单下划线

__FILE__ 包含当前程序文件名的字符串
__LINE__ 表示当前行号的整数
__DATE__ 包含当前日期的字符串
__STDC__ 如果编译器遵循ANSI C标准,它就是个非零值
__TIME__ 包含当前时间的字符串

例如:

输出当前程序文件名的程序:

//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)
{
printf("%s",__FILE__);
return 0;
}
//---------------------------------------------------------------------------

热心网友 时间:2023-11-22 20:58

如果添加了这段断言代码,对于开发大型、复杂的系统,这条语句其实用处很大。每次程序运行错误之后,它会打印程序代码指定的位置,方便我们在庞大的程序中很快找到错误的位置。

我们的系统会随着时间的推移,不断升级更新,也就是需要提交很多版本的可执行文件(hex、bin等)。但是,产品后期使用中,我们对某些设备进行了升级,可能忽略了一些设备(忘记升级),如果出现故障,我们怎样才能很快找到是哪一个版本的软件出现故障呢?

我们的系统会随着时间的推移,不断升级更新,也就是需要提交很多版本的可执行文件(hex、bin等)。但是,产品后期使用中,我们对某些设备进行了升级,可能忽略了一些设备(忘记升级),如果出现故障,我们怎样才能很快找到是哪一个版本的软件出现故障呢?

C几种特殊标准定义

__FILE__ :正在编译文件的文件名

__LINE__ :正在编译文件的行号

__DATE__:编译时刻的日期字符串 如“Sep 22 2020”

__TIME__:编译时刻的时间字符串 如”10:00:00“

__STDC__:判断该文件是不是标准C程序

1.__FILE__编译文件名称

File中文意思即文件,这里的意思主要是指:正在编译文件对应正在编译文件的路径和文件的名称。

Keil版本对应的路径是相对于工程文件而言的路径,IAR版本路径是相对Windows路径。

源代码:

char BuildFile[] = __FILE__;
printf("编译文件路径:%s\n", BuildFile);

Keil:

编译文件路

IAR:

编译文件路径

2.__LINE__编译文件行号

上面说的是编译的文件名,是一个字符串,而这里说的是行号,是一个整型变量,这是这两者的区别,

比如在工程中添加源代码:

char BuildLine = __LINE__;
printf("编译代码所在行:%d\n", BuildLine);

可以看不是数组的字符串,打印信息:

编译代码所在行:44

一般情况下,__FILE__是和__LINE__结合一起使用,用于打印我们代码信息,方便快速定位代码位置。

3.__DATE__编译日期

__DATE__日期,需要注意的是:这个日期是你在编译时Windows系统的日期,如果对应那部分代码之前编译好了,后面没有编译,这个日期还是之前的日期,而不是后面编译的日期。因此,如果这里用于定版本,就需要在定版本时对工程进行全部重新编译,它才会更新至你最后编译的日期

热心网友 时间:2023-11-22 20:59

printf("\n [%s]: %d ", __FUNCTION__, __LINE__);

打印出 函数名称 和 行号

很简单 是c的宏定义 不需要头文件

goodluck

热心网友 时间:2023-11-22 20:59

源文件名用%d打印是不是有点问题呢?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
男人醉女人累原歌 我大概在2009年玩的很早的一款冒险动作游戏有一关是埃及狗头人主角捡武... 提成点数怎么算公式 Huamei/华美每日粗粮粗纤维饼-适用对象 0pp01107格式化后成白屏且不能开机怎么办 五邑大学是市属还是省属 五邑大学校区有几个 窝瓜焖荷包蛋怎么做? 达科塔·芬妮简要生平 湖北自动冷库多少钱 如果豪迈电子锯找不到o neline文件夹怎么办? 2、请改写课本例题4-4线段(Line类),建立工程,使用多文件的组织结构实现程序(30分)。要求_百度问一问 我电脑里有个line-bestone文件夹,在C盘占用空间很大(2.66G),为什么?这里面是存什么的?可以删除吗? 生物试验 垃圾分类的好处 怎么用电脑蓝牙? 怎么跨域获取到json数据呢?服务器端有什么要求吗? 达丰猴头菇饼干价格 移动手机上网资费详细介绍一下吧~! 中国移动的~~` 朋友帮我看下`~ 中国移动赚钱吗? 关于中国移动的!~! 移动为什么要叫移动?~《》 求助~中国移动~ 中国移动~!~!~ 如何利用macd这个指标进行交易 空调制暖出水口在哪 空调冬天的出水口在哪里 糖尿病人便秘吃什么 请问我爷爷因糖尿病引起的便密怎么帮? 隐藏的文件点了保存后在怎么取消隐藏 酷派手机里的 nv_line1.txt文件夹存放在那个文件夹??? line deco图标在那个文件夹 Image-Line(水果)和xwidget(酷鱼)在我的文档里生成了下图的文件夹,能不能删除? lineinvoice 2022北大研究生法学分数线 什么原因导致手机内存卡在电脑上读不出来 为什么我的电脑识别不了手机内存卡? 电脑上读取不到手机内存里的内容。 为什么我的电脑识别不了手机内存卡 生日可以写一生安康吗? 朋友生日可不可以说安康顺遂! pvc,pp,ps,pet,abs的区别 寿辰安康是什么意思 生日安康是什么意思 PS材料的化学名称是啥 知识普及:化工原料都有哪些 年人人的生日蛋糕写“安康”好不好 祝五姑生日快乐!身体健康天天开心可以吗? 怎样在他趣里面留不会封号 他趣发对方收不到吗