c – 当给定宏预处理器符号被声明时,如何知道(在GCC中)?

c – 当给定宏预处理器符号被声明时,如何知道(在GCC中)?,第1张

概述假设我有#define foo在各种头文件.它可能扩展到一些不同的东西.我想知道(当编译一个.cc文件)遇到一个#define,它会扩展,它是哪个文件和它包含在哪里. 可能吗?如果没有,是否有任何可能有帮助的部分解决方案? 随意添加评论与澄清请求. 编辑:目前的答案似乎集中在案例当有一个#define,我只想跳到定义或知道什么是定义.这是简单的案例,是的,您的解决方案可以正常工作.但是当我在不同的 假设我有#define foo在各种头文件.它可能扩展到一些不同的东西.我想知道(当编译一个.cc文件)遇到一个#define,它会扩展,它是哪个文件和它包含在哪里.

可能吗?如果没有,是否有任何可能有帮助的部分解决方案?

随意添加评论与澄清请求.

编辑:目前的答案似乎集中在案例当有一个#define,我只想跳到定义或知道什么是定义.这是简单的案例,是的,您的解决方案可以正常工作.但是当我在不同的文件中使用相同的#define,并且想要知道哪一个在首先启动时,这些技术都不是有用的.好的,我实际上使用#warning仔细找到正确的地方.但这需要很多工作.

解决方法 你看 :
# shows preprocessed source with cpp internals removedg++ -E -P file.cc# shows preprocessed source kept with macros and include directives g++ -E -dD -dI -P file.cc

上面的内部是gcc的线标记,当您读取输出时有点混淆. -P剥他们

 -E  Stop after the preprocessing stage; do not run the compiler proper.       The output is in the form of preprocessed source code,which is sent to the      standard output.     input files which don't require preprocessing are ignored.

注意:评论正确抱怨这只是一个部分解决方案.当宏将被替换时,它不会告诉你.它显示您的预处理源,这可能是有帮助的.

总结

以上是内存溢出为你收集整理的c – 当给定宏/预处理器符号被声明时,如何知道(在GCC中)?全部内容,希望文章能够帮你解决c – 当给定宏/预处理器符号被声明时,如何知道(在GCC中)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1233598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存