当前位置:  开发笔记 > 编程语言 > 正文

C++模板元编程 - 是否可以输出生成的代码?

如何解决《C++模板元编程-是否可以输出生成的代码?》经验,为你挑选了4个好方法。

我想调试一些模板化代码以更好地理解它.
不幸的是,我是模板元编程的新手,我很难进入.

当我尝试输出预处理的源文件时,我获得了125 000行代码:/

那么我有没有办法看到生成的代码?(我正在使用的库是SeqAn)



1> jalf..:

一般来说,不可能做到这一点.模板只是C++语言的一部分,它们不是一个单独的预处理器,因此它们不生成C++代码.

通常的解决方案是使用静态断言和其他测试来填充代码,以验证正确的模板是否以正确的方式实例化.

一旦开始迷失元编程,这个简单的技巧可以帮助您确定模板参数的确实类型:

// given a variable t of an unknown type T
int*** i = t;

当编译器遇到这种情况时,它会打印出一个漂亮而简单的错误消息"无法转换为int***",允许您轻松验证模板参数T实际上是您认为它应该是的类型.



2> 小智..:

不,不是.预处理器与模板处理无关,模板处理由编译器执行.模板不会生成C++代码,只不过是函数调用 - 它们是C++语言本身不可或缺的一部分.



3> jmihalicza..:

检查我在C++模板元程序调试上的出版物

从第6页开始,您可以看到它是如何工作的.出于特定目的,您不需要整个工具链,可以手动完成.

我已经整理了一个Visual C++插件,你可以放置断点等等,但这是一个概念证明,而不是每天使用的工具.

我们一直在研究一个图形前端,它显示了所有实例化,允许调试,分析.不幸的是,我们无法承诺该工具的任何发布日期,因为我们在非常有限的空闲时间内这样做.

更新:此处提供调试器和分析器

更新:C++现在演示



4> Daniel Earwi..:

这可能是您的问题的答案:

C++模板预处理器工具

似乎已经满足了最后一个问的人 - 虽然我无法想象为什么!C语言中C++编译器的输出通常是不可读的,因为它不是为了帮助理解,而仅仅是一种可移植的汇编语言.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有