为了正确调试 C++ 中的复杂宏,我通常在它们上运行预处理器,以便准确查看生成的代码的样子。
有类似“预处理”模板代码的方法吗?
最佳答案
一种方法(依赖于编译器)是在每个编译器步骤之后使用转储。我写了一个小程序:
template<class T>
T square(T n)
{
return n * n;
}
int main(void)
{
square<int>(3);
square<float>(3.0);
}
然后:
g++ -fdump-rtl-all test.cc
这给了我一堆文件。看看(在我的例子中)test.cc.218.dfinish:
;; Function int main() (main)
;; Function T square(T) [with T = int] (_Z6squareIiET_S0_)
;; Function T square(T) [with T = float] (_Z6squareIfET_S0_)
关于c++ - 如何扩展/"preprocess"C++模板代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5193867/