可以在#define
中使用雙冒號嗎?我想在實現文件中保存一些文字,例如像這樣:在#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爲例):
Line 11: error: missing whitespace after the macro name
Line 10: error: extra tokens at end of #undef directive
Line 4: error: 'foo' is not a template
compilation terminated due to -Wfatal-errors.
好的問的問題,但我會發布你得到的語法錯誤 –
這看起來對我來說是一個真正糟糕的主意,即使它工作(感謝上帝它沒有)。沒有人會理解或維護您的代碼。你的繼任者會堅持你的肖像。 – TonyK