Ich habe eine Auswahl von #defines in einer Kopfzeile, die Benutzer editierbar sind und so möchte ich später überprüfen, ob die Definitionen vorhanden sind, falls ein Benutzer sie vollständig löscht, z.Präprozessor prüfen, ob mehrere Definitionen nicht definiert sind
#if defined MANUF && defined SERIAL && defined MODEL
// All defined OK so do nothing
#else
#error "User is stoopid!"
#endif
Das funktioniert völlig in Ordnung, ich frage mich aber, ob es einen besseren Weg, wenn mehrere definiert anstelle NICHT zu überprüfen ist, sind ... also so etwas wie:
#ifn defined MANUF || defined SERIAL ||.... // note the n in #ifn
oder vielleicht
#if !defined MANUF || !defined SERIAL ||....
, um die Notwendigkeit für die leere #if Abschnitt zu entfernen.
FYI: 'defined' ein Operator ist, der ist aufgerufen wie eine Funktion (genau wie 'sizeof'. Also, wenn Sie es wie eine Funktion nennen, wird Ihr Beispiel gut funktionieren. Außerdem können Sie die meisten logischen Operatoren ('==', '! =', '!', '||', '&&') auch in Präprozessoranweisungen verwenden. –
Es ist ein allgemeiner Grundsatz der Booleschen Algebra, dass Sie '! (X && y)' durch '(! X ||! Y)' ersetzen können. http://en.wikipedia.org/wiki/De_Morgan%27s_laws – Vicky