Mam wybór #defines w nagłówku, który można edytować przez użytkownika, a następnie chciałbym sprawdzić, czy definicje istnieją, na wypadek gdyby użytkownik usunął je całkowicie, np.Sprawdzanie preprocesora, jeśli nie zdefiniowano wielu definicji
#if defined MANUF && defined SERIAL && defined MODEL
// All defined OK so do nothing
#else
#error "User is stoopid!"
#endif
Działa to doskonale OK, zastanawiam się jednak, czy jest lepszy sposób, aby sprawdzić, czy wielokrotne definiuje NIE są na miejscu ... czyli coś jak:
#ifn defined MANUF || defined SERIAL ||.... // note the n in #ifn
czy może
#if !defined MANUF || !defined SERIAL ||....
aby usunąć potrzebę pustej sekcji #if.
FYI: "zdefiniowany" to operator, który jest wywoływana jak funkcja (tak jak 'sizeof'. Więc jeśli nazwiesz to jak funkcją, twój przykład będzie działał dobrze. Również - możesz użyć większości operatorów logicznych ('==', '! =', '!', '||', '&&') również w instrukcjach preprocesora. –
Jest to ogólna zasada algebry Boole'a, którą możesz zastąpić '! (X && y)' z '(! X ||! Y)'. http://en.wikipedia.org/wiki/De_Morgan%27s_laws – Vicky