【发布时间】:2015-03-08 22:12:17
【问题描述】:
如何在 C/C++ 文件中测试/扩展所有函数宏,而不通过预处理器运行它? 例如,是否有可以改变这种情况的程序或方法:
#include <iostream>
#define AAA(a) cout << "function " << a << endl
using namespace std;
int main(){
AAA(12);
}
喜欢这个吗?
#include <iostream>
using namespace std;
int main(){
cout << "function " << 12 << endl;
}
我不想通过预处理器运行,因为文件中的所有包含使“gcc -E ”输出非常难看,我只想要几个简单的宏扩展而没有所有开销。
【问题讨论】:
-
您可能会编写一些使用 clang 作为库的代码,并使用它的预处理器。除非
grep -v ^\#include myfile|gcc -E对你来说足够好。 -
Resharper for C++ 让您可以做到这一点。
-
感谢 Mats 的建议,我会研究 Clang。但是,它将迭代超过 33k+ 行代码,所以我认为 grep 会变得有点脏。我现在在 Mac 上,但我会跳上 VM 并给 Resharper 一个机会。
-
@Involution:在
#include前面加上// {unique tag}会更容易,通过普通的预处理器运行,然后再次删除// {unique tag}。 -
@Involution:GCC 使用
-C选项保留 cmets。
标签: c++ c-preprocessor