如何确定我的编译器(g ++)使用模板代码做什么?
我正在使用boost.proto(一个表达式模板库)在编译时评估一些数学表达式。代码正确地评估表达式,但我想看看编译器是否已将表达式扩展为等同于手写的c代码(即消除了所有临时代码),或者是否还有一些编译时优化要做。
有没有办法看看编译器对模板做了什么?
由于
答案 0 :(得分:2)
g++ -S
记录为“仅编译;不汇编或链接”。基本上你得到装配输出。
答案 1 :(得分:2)
在模板实例化传递后,有几种方法可以查看C ++代码:
gcc -fdump-tree-original
(甚至-fdump-tree-all
查看更多通行证)