如何让编译器告诉我#define值是什么文件?

NSA*_*NSA 3 c++ c-preprocessor

我的代码链接到我公司也开发的其他几个库,其中一个库正在重新定义errno.h中的几个值,我希望能够解决这个问题,但是我无法找到确切的文件.重新定义这些值,我想知道是否有一种方法可以让编译器在文件定义了特定值时告诉我.

Car*_*rum 5

您可以通过添加-include errno.h到构建相关库的命令行来实现.这是一个简单的例子.我有一个名为"file.c"的C程序:

#define ESRCH 8
Run Code Online (Sandbox Code Playgroud)

就是这样 - 然后我编译:

cc -c -include errno.h file.c
Run Code Online (Sandbox Code Playgroud)

并且presto,一个编译器警告:

file.c:1:1: warning: "ESRCH" redefined
In file included from /usr/include/errno.h:23,
                 from <command-line>:0:
/usr/include/sys/errno.h:84:1: warning: this is the location of the previous definition
Run Code Online (Sandbox Code Playgroud)

这将告诉你你的坏定义在哪里.