C++ 自定义#pragma

C++ custom #pragma

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

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

语法类似于:

#pragma add_controller(class_name, "class_alias")

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

register_controller<class_name>("class_alias");

并在每次编译器解释此 #pragma.

时追加到文件末尾

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

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

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

并像这样使用它:

add_controller(whatever_controller, "whatever_alias");