Unterschied zwischen “ifndef” und “if !defined” in C?

Lesezeit: 1 Minute

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.

1408250cookie-checkUnterschied zwischen “ifndef” und “if !defined” in C?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy