Der folgende Code:Funktionsmakros ohne Körper, sondern verschiedene Namen Argumentations
#define MYDEF(x)
#define MYDEF(y)
int main() {}
gibt mir eine error (oder wenn pedantic-errors
Warnung deaktiviert ist):
'MYDEF' Makro neu definiert
Der Grund ist andere Namen für unbenutztes Argument (mehr vorbei, es gibt keinen Körper im Makro). Aber warum? In welchen Situationen kann es ein Problem sein?
Der Standard erfordert, dass mehrere Definitionen eines Makros identisch sind. Die beiden obigen Definitionen sind nicht identisch. Sie sind gleichwertig, aber der Standard erfordert identische. Wenn Sie mit einer anderen Definition neu definieren wollen, '# undef 'das alte Makro zuerst. –