扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇文章为大家展示了如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联建站专注于企业网络营销推广、网站重做改版、台儿网站定制设计、自适应品牌网站建设、HTML5建站、商城网站制作、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为台儿等各大城市提供网站开发制作服务。
C / C++ 当项目过于庞大的时候经常会出现有些头文件有多份拷贝。 如下图所示: |
有可能会出现 多份相同的头文件里面代码却不一致的情况。
如果恰巧引用了这样的头文件,可能会导致编译错误,
比如:
A 目录下的 xx.h 有一个变量 h;
B 目录下的 xx.h 没有变量 h;
我们编译路径中可能引用的是 B 目录下面的 xx.h 就有可能 导致 访问不存在的变量 h 而导致编译问题。
那么怎么快速定位到我们引用的头文件的路径呢?
gcc 有相关编译选项 -MMD 或者 -MD
`-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 里面,根据不同的变量自行修改便可.
在 执行 make 进行编译,会得到一个 xx.cpp => xx.d 的文件
用编辑器打开便可以看到完整的头文件路径:
从图中可以清晰的看到所使用的头文件的路径
是用的 application/share/webapp_frame/include/webapp_headinfo.h
而不是 server/share/webapp_frame/include/webapp_headinfo.h 文件
这样可以便于快速定位和修复一些编译上面的问题。
上述内容就是如何通过使用 gcc编译选项快速定位头文件路径解决编译中的问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流