最初,我认为我需要这样做,但最终我避免了。但是,我的好奇心(以及对知识的渴望,嗡嗡声)使我问:

预处理器宏可以吗,例如

#include "MyClass.h"

INSTANTIATE_FOO_TEMPLATE_CLASS(MyClass)

扩展到另一个包含,例如
#include "MyClass.h"

#include "FooTemplate.h"
template class FooTemplate<MyClass>;

最佳答案

我相信这是不可能完成的,因为预处理器是单遍。因此,它不能发出其他预处理器指令。

具体而言,根据C99标准(6.10.3.4第3段):



有趣的是,这就是为什么将一元_Pragma运算符添加到c99的原因。因为#pragma不能由宏发出,但是_Pragma可以。

关于c++ - 将预处理器宏扩展为另一个预处理器指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1262063/

10-13 05:02