最初,我认为我需要这样做,但最终我避免了。但是,我的好奇心(以及对知识的渴望,嗡嗡声)使我问:
预处理器宏可以吗,例如
#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/