假设我有#define foo在各种头文件.它可能扩展到一些不同的东西.我想知道(当编译一个.cc文件)遇到一个#define,它会扩展,它是哪个文件和它包含在哪里.
可能吗?如果没有,是否有任何可能有帮助的部分解决方案?
编辑:目前的答案似乎集中在案例当有一个#define,我只想跳到定义或知道什么是定义.这是简单的案例,是的,您的解决方案可以正常工作.但是当我在不同的文件中使用相同的#define,并且想要知道哪一个在首先启动时,这些技术都不是有用的.好的,我实际上使用#warning仔细找到正确的地方.但这需要很多工作.
解决方法
你看 :
@H_404_12@# shows preprocessed source with cpp internals removed
g++ -E -P file.cc
# shows preprocessed source kept with macros and include directives
g++ -E -dD -dI -P file.cc
上面的内部是gcc的线标记,当您读取输出时有点混淆. -P剥他们
@H_404_12@ -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.