【发布时间】:2011-10-23 00:05:43
【问题描述】:
我可以在 #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.
}
但是我遇到了我不太理解的语法错误。 (参见codepad 上的示例):
第 11 行:错误:宏名称后缺少空格
第 10 行:错误:#undef 指令末尾的额外标记
第 4 行:错误:“foo”不是模板
编译因 -Wfatal-errors 而终止。
【问题讨论】:
-
问得很好,但我也会发布您遇到的语法错误
-
这对我来说似乎是一个非常糟糕的主意,即使它有效(感谢上帝它没有)。没有人能够理解或维护您的代码。你的继任者会像你一样坚持。
标签: c++ compiler-errors c-preprocessor