Kullanıcının düzenlenebilir bir üstbilgisinde #defines seçimlerim var ve bu nedenle, bir kullanıcının bunları tamamen silmesi durumunda tanımların var olduğunu kontrol etmek istiyorum. Birden tanımlar ... yerinde DEĞİL olup olmadığını kontrol etmek daha iyi bir yolu olup olmadığınıÖnişlemci, birden çok tanım tanımlanmamış olup olmadığını kontrol edin
#if defined MANUF && defined SERIAL && defined MODEL
// All defined OK so do nothing
#else
#error "User is stoopid!"
#endif
Bu mükemmel Tamam çalışır, ben ancak merak ediyorum yani bir şey gibi:
#ifn defined MANUF || defined SERIAL ||.... // note the n in #ifn
ya da belki
Boş #if bölümüne olan ihtiyacı ortadan kaldırmak için#if !defined MANUF || !defined SERIAL ||....
.
: bütün c dosyaları tarafından dahildir config.h böyle bir giriş vardır 'defined' bir operatörüdür bir işlev gibi çağrılır (tıpkı “sizeof” gibi). Yani eğer bir işlev gibi çağırırsanız, örneğiniz iyi çalışır. Ayrıca - önişlemci deyimlerinde de çoğu mantıksal işleçleri ('==', '! =', '!', '||', '&&) kullanabilirsiniz. –
Bu, '(x && y)' ile '' (! X ||! Y) 'arasında değiştirebileceğiniz boole cebri genel bir ilkesidir. http://en.wikipedia.org/wiki/De_Morgan%27s_laws – Vicky