有没有办法在运行时间内获取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__);