Ich habe gesehen #ifndef ABC
und #if !defined (ABC)
in der gleichen C-Quelldatei.
Gibt es einen feinen Unterschied zwischen ihnen? (Wenn es eine Frage des Stils ist, warum sollte jemand sie in derselben Datei verwenden)
Ich habe gesehen #ifndef ABC
und #if !defined (ABC)
in der gleichen C-Quelldatei.
Gibt es einen feinen Unterschied zwischen ihnen? (Wenn es eine Frage des Stils ist, warum sollte jemand sie in derselben Datei verwenden)
Nein, es gibt keinen Unterschied zwischen den beiden, wenn sie so verwendet werden. Die letztere Form (mit defined()
) ist nützlich, wenn die Initiale #if
oder eine der folgenden #elif
Bedingungen erfordert einen komplexeren Test. #ifdef
wird immer noch funktionieren, aber es könnte klarer sein, es zu verwenden #if defined()
In diesem Fall. Zum Beispiel, wenn getestet werden muss, ob mehr als ein Makro definiert ist oder ob es einem bestimmten Wert entspricht.
Die Abweichung (wenn beide in einer Datei verwendet werden) könnte, wie oben erwähnt, von bestimmten Feinheiten in der Verwendung oder einfach nur von schlechter Praxis abhängen, da sie inkonsistent ist.
In dem Kontext, den Sie angegeben haben, sind sie gleich: Sie prüfen nur, ob eine Makrokennung vorhanden ist.
Das #if-Formular ermöglicht es Ihnen jedoch, Ausdrücke auszuwerten, was nützlich sein kann.