C ++自定义#pragma

时间:2015-09-08 23:09:16

标签: c++ macros pragma

我想知道如何使编译器理解#pragma宏的自定义参数。

我的目标是使用宏执行外部脚本,我想使用#pragma是可行的方法;如果还有其他方法,请告诉我。

语法类似于:

#pragma add_controller(class_name, "class_alias")

这样我就可以生成一个包含以下内容的动态.h文件:

register_controller<class_name>("class_alias");

并在每次编译器解释此#pragma时附加到文件末尾。

1 个答案:

答案 0 :(得分:4)

pragma是编译器的内置功能,特定于编译器。除非您愿意篡改编译器本身,否则您无法在一般情况下更改或扩展它们 要求程序员使用自定义构建的编译器可能不是使代码更有用的最佳方法:)。

对于您的示例,您可以使用宏:

#define add_controller(name, alias) register_controller<name>(alias)

并像这样使用它:

add_controller(whatever_controller, "whatever_alias");