Was kommt zuerst - Template-Instanziierung vs. Makro-Erweiterung?
Betrachten wir ein Codebeispiel wie dieses (es ist nur ein künstliches Beispiel zum Kombinieren)define
undtemplate
, suche keinen Sinn es):
#define COMMA ,
template <typename A> class Test
{
public:
Test(){}
void Foo(A var COMMA int test);
};
Test<int> Knarz;
Frage:
Ist meine Annahme richtig, dasszuerst Der Präprozessor sucht / ersetzt alle Vorkommen von COMMA undzweite Der Compiler wird alle Vorlagen in dieser Reihenfolge instanziieren.
Nachverfolgen:
Wenn die obige Antwort lautet 'Ja'Kannst du, wie ich hoffe, erklären, warum das so ist?Lösung mit Vorlagen und definiert funktioniert?