关于C#:扩展宏进行调试?

Expanding macros for debugging?

我是使用宏函数的新手,并且我了解使用宏函数在操作顺序方面存在一些陷阱。在预处理程序处理完宏之后,是否可以扩展宏,以便可以看到它的外观?

在VS2017中,我尝试对Processor> C / C> Preprocessor>进行预处理,以创建一个创建*.i文件的文件,但该文件的长度约为5万行,我似乎找不到我的位置宏扩展为。

编辑:我知道宏是坏消息,但是,我要介入的代码库相当多地使用了它们,因此我试图更好地理解它们。


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.

您可以通过在使用宏的行之前声明一个虚拟变量来帮助自己。

例如

1
2
extern int dummyIntVariable;
MY_COMPLICATED_MACRO(arg1, arg2);

之后,您在.i文件中寻找dummyIntVariable。它下面的行将包含MY_COMPLICATED_MACRO扩展到的内容。

或者就像@Sneftel在注释中指出的那样,您可以使用任何旧字符串来帮助您浏览.i文件。

1
2
THIS IS A UNIQUE STRING
MY_COMPLICATED_MACRO(arg1, arg2);

由于将对文件进行预处理,因此也应该可以使用。