我能在 #define
中使用双冒号吗?我想在实现文件中节省一些写作,例如:
// foo.h
#define template template <class T>
#define foo:: foo<T>::
template class foo {
T& baz();
};
#include "foo.tpp"
#undef template
#undef foo::
// foo.tpp
template T& foo::baz() {
// do stuff.
}
但我遇到了一些语法错误,实际上不太理解。(可参考这个示例):
第11行:错误:宏名称后缺少空格
第10行:错误:#undef指令结尾处有额外的标记
第4行:错误:'foo'不是一个模板
编译因-Wfatal-errors而终止。