温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题

发布时间:2021-11-09 18:34:09 来源:亿速云 阅读:335 作者:柒染 栏目:大数据

本篇文章为大家展示了如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

C / C++ 当项目过于庞大的时候经常会出现有些头文件有多份拷贝。

如下图所示:

如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题

有可能会出现 多份相同的头文件里面代码却不一致的情况。

如果恰巧引用了这样的头文件,可能会导致编译错误,

比如:

A 目录下的 xx.h 有一个变量 h;

B 目录下的 xx.h 没有变量 h;

我们编译路径中可能引用的是 B 目录下面的 xx.h 就有可能 导致 访问不存在的变量 h 而导致编译问题。

那么怎么快速定位到我们引用的头文件的路径呢?

gcc 有相关编译选项 -MMD 或者 -MD

如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题

`-MD'
`-MD' is equivalent to `-M -MF FILE', except that `-E' is not
implied. The driver determines FILE based on whether an `-o'
option is given. If it is, the driver uses its argument but with
a suffix of `.d', otherwise it take the basename of the input file
and applies a `.d' suffix.

If `-MD' is used in conjunction with `-E', any `-o' switch is
understood to specify the dependency output file (but *note -MF:
dashMF.), but if used without `-E', each `-o' is understood to
specify a target object file.

Since `-E' is not implied, `-MD' can be used to generate a
dependency output file as a side-effect of the compilation process.

`-MMD'
Like `-MD' except mention only user header files, not system
header files.

一般加在 我们 Makefile 文件的 gcc 的 FLAGS 里面,根据不同的变量自行修改便可.

如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题

在 执行 make 进行编译,会得到一个 xx.cpp => xx.d 的文件

如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题

用编辑器打开便可以看到完整的头文件路径:

如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题

从图中可以清晰的看到所使用的头文件的路径

是用的 application/share/webapp_frame/include/webapp_headinfo.h

而不是 server/share/webapp_frame/include/webapp_headinfo.h 文件

如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题

这样可以便于快速定位和修复一些编译上面的问题。

上述内容就是如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

gcc
AI