概述
我们在调试C程序代码,尤其是嵌入式系统开发过程中的时候,经常使用printf函数输出一些我们需要关注的变量和状态,以判断我们代码中存在的问题,比如我们在程序适当的位置添加打印输出:
void funcdemo(void)
{
int i;
……
printf("i = %d",i);
}
这时候借助串口的输出信息我们就可以比较方便的判断是不是出问题,有没有正确执行。输出如下:
i = 10
但是当我们程序量非常大的时候,各种打印输出也非常多,这时候可能我们需要快速定位是哪个地方的输出,当然我们可以加一些定位的语句在printf中,或者直接搜索整个工程文件来定位。
另外我们会有一个更加方便的方法来使用printf函数直接输出代码所在的文件和行数,需要用到以下两个c语言中的宏定义:
- _FILE_ :当前源文件名,表示字符串型常量
- _LINE_:当前程序行的行号,表示为十进制整型常量
- _func_:当前函数名,仅GCC编译器支持
以上是标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义。
使用方法如下:
//例如源文件的文件名demo.c
void funcdemo(void)
{
int i;
……
printf("%s(%d) %s: i = %d", __FILE__, __LINE__,__func__,i); //假如本行是从第一行开始数的第15行
}
这样,当程序运行到此处时,就会输出:
c:documents and settingsadministratordemo.c(15) funcdemo: i = 10
如此一来就非常方便的定位到了代码所在位置,方便我们的调试。
最后
以上就是热心朋友为你收集整理的C程序调试中输出代码所在文件、函数和行数的方法的全部内容,希望文章能够帮你解决C程序调试中输出代码所在文件、函数和行数的方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复