【发布时间】:2010-11-11 12:09:12
【问题描述】:
是否有编译器或独立的预处理器接收 C++ 文件并运行模板扩展传递,生成具有扩展模板实例化的新 C++ 代码?
我记得在 90 年代中期这样一个工具还是新的和实验性的模板,而预处理器是一种在没有原生模板支持的情况下使用编译器进行模板编程的方法。
这比宏处理步骤复杂得多,因为它可能需要解析和标记代码才能理解上下文。
我希望在编写 OpenCL 代码时使用这样的工具。 OpenCL 是 C++,但不支持模板。我希望我可以编写模板,甚至是简单的模板,例如仅带有整数或布尔参数的模板,并且有一些工具预解析文件并通过查找模板的使用并扩展调用并给我新的 C++ 代码OpenCL 编译器可以理解。
即使是一个非常有限的工具也可能有用,它不需要支持每个模板怪癖,甚至也不需要支持多个模块或任何东西。
替代方案:#define 无处不在的宏……更丑陋、不安全、效率更低、通用性更低。
【问题讨论】:
-
OpenCL 的语言基于 C99 语法,而不是根据您链接的页面的 C++。
-
AMD对openCL做了一些扩展,如果你只针对AMD设备,你可以开发模板代码。我们不能使用模板来开发我们的算法是一个痛苦。
标签: c++ templates macros opencl c-preprocessor