在处理宏时,我们可以使用(对于gcc -dM)选项让预编译器将宏定义分解为c ++源代码。我正在寻找一种工具,更好的编译器选项来对模板执行相同的操作(即使以受限的方式)。如果我继承了带有多层模板且混合了多个继承的代码,那将非常有帮助吗?特别是,该机器必须在模板解释后确切知道代码的状态。 只要暴露代码的扁平结构,我什至不会抱怨名称混乱。
答案 0 :(得分:0)
你真的不能那样做。
宏非常简单。它们只不过是文本替换。
但是,模板是语义,假设,理论,学术,不可知的,深奥的,撒旦的,空灵的果汁的一部分,
它们仅存在于源代码和程序之间的空间中。
生与死之间的空虚。
没有文字表示。只是一种感觉。一整套的想法。从编译器输入单词开始到吐出动作的时间,编译器一直保持这种本能。
好吧,可以肯定的是,从理论上讲,有一种人类可读的格式,编译器可以将其所有实例都转储为模板实例化,但是老实说:最简单的方法是吐出您提供的C ++首先。
所以,是的。
话虽如此,如果您真的真的很头疼,请学习使用LLVM后端API。