我是使用宏函数的新手,我知道在使用宏函数时在操作顺序方面存在一些缺陷。有没有一种方法可以在预处理器处理完宏后展开它,以便我可以看到它的样子?
在 VS2017 中,我尝试了 Processor > C/C++ > Preprocessor > Preprocess to a file that creates an *.i
file 但它大约有 50k 行长,我似乎找不到我的宏扩展到的地方。
编辑:我知道宏是坏消息,但是,我正在涉足的代码库大量使用了它们,所以我试图更好地理解它们。
最佳答案
In VS2017, I've tried Processor > C/C++ > Preprocessor > Preprocess to a file which creates an *.i file but it's around 50k lines long and I can't seem to find where my macro was expanded to.
您可以通过在使用宏的行之前声明一个虚拟变量来帮助自己。
例如
extern int dummyIntVariable;
MY_COMPLICATED_MACRO(arg1, arg2);
之后,您在 .i 文件中查找 dummyIntVariable
。它下面的行将包含 MY_COMPLICATED_MACRO
扩展到的内容。
或者正如@Sneftel 在评论中指出的那样,您可以使用任何旧字符串来帮助您浏览 .i 文件。
THIS IS A UNIQUE STRING
MY_COMPLICATED_MACRO(arg1, arg2);
由于文件只是经过预处理,因此应该也可以。
关于c++ - 扩展宏进行调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50179181/