Czy mogę używać podwójnych dwukropków w #define
? Chciałbym zapisać niektóre zapisy w plikach implementacji, np. tak:Używaj podwójnych dwukropków (: :) w #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.
}
Ale dostaję błędy składniowe, których tak naprawdę nie rozumiem. (patrz przykład na 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.
Dobrze zadane pytanie, ale chciałbym opublikować błędy składniowe, które otrzymujesz. –
To wygląda mi na naprawdę zły pomysł, nawet jeśli zadziałało (to dzięki Bogu, że tak nie jest). Nikt nie będzie w stanie zrozumieć ani utrzymać twojego kodu. Twoi następcy będą przylepiać szpilki do twojego podobieństwa. – TonyK