C ++自定义#pragma

Raf*_*cio 4 c++ macros pragma

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

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

语法类似于:

#pragma add_controller(class_name, "class_alias")
Run Code Online (Sandbox Code Playgroud)

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

register_controller<class_name>("class_alias");

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

kur*_*eko 5

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

例如,您可以使用宏:

#define add_controller(name, alias) register_controller<name>(alias)
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

add_controller(whatever_controller, "whatever_alias");
Run Code Online (Sandbox Code Playgroud)