有没有办法在运行时间内获取C代码中的源代码行号?
Is there any way to get the source code line number in C code in run time?
有什么办法可以在运行时间内得到C代码中的源代码行号吗?
其背后的想法是,假设一个软件是用纯 C 语言制作的。 .exe文件分发给对C一窍不通的用户,现在如果有任何错误,用户可以看到行号,并向厂商报告错误,以便在厂商现场进行调试。我只是为了调试 运行 时间错误并在 运行 宁它的同时在源代码中获取相应的行号。我是这些东西的初学者。
如果您使用的是 GCC 编译器,则可以使用标准预定义宏 - __LINE__
作为行号占位符。
编译器会在编译的时候填入行号。
例如:-
printf("%d",__LINE__);
您可以使用 built-in 宏 __LINE__
和 __FILE__
,它们总是扩展到当前文件名和行号。
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc<2)
{
printf("Error: invalid arguments (%s:%d)\n", __FILE__, __LINE__);
return 0;
}
printf("You said: %s\n", argv[1]);
return 0;
}
改用gdb。但我想它会起作用:
if(someThingsWrong())
printf("wrong at line number %d in file %s\n", __LINE__, __FILE__);
有什么办法可以在运行时间内得到C代码中的源代码行号吗? 其背后的想法是,假设一个软件是用纯 C 语言制作的。 .exe文件分发给对C一窍不通的用户,现在如果有任何错误,用户可以看到行号,并向厂商报告错误,以便在厂商现场进行调试。我只是为了调试 运行 时间错误并在 运行 宁它的同时在源代码中获取相应的行号。我是这些东西的初学者。
如果您使用的是 GCC 编译器,则可以使用标准预定义宏 - __LINE__
作为行号占位符。
编译器会在编译的时候填入行号。
例如:-
printf("%d",__LINE__);
您可以使用 built-in 宏 __LINE__
和 __FILE__
,它们总是扩展到当前文件名和行号。
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc<2)
{
printf("Error: invalid arguments (%s:%d)\n", __FILE__, __LINE__);
return 0;
}
printf("You said: %s\n", argv[1]);
return 0;
}
改用gdb。但我想它会起作用:
if(someThingsWrong())
printf("wrong at line number %d in file %s\n", __LINE__, __FILE__);