Per codice specifico compilatore, è comune vedere direttive CPP quali:C preprocessore macro - definizione vs. portabilità valore e la pratica
#if defined (__GNUC__) && (__GNUC__ >= 4)
che è la prova di preprocessore Io di solito uso - non esclusivamente per __GNUC__
, ma è un esempio comune. In alternativa,
#if (__GNUC__ >= 4)
sembra soddisfare gli stessi requisiti. Ci sono potenziali problemi con quest'ultimo? Non solo con gcc, ma con qualsiasi preprocessore conforme agli standard. L'LHS può essere valutato come un certo valore, anche se non è definito? Ci sono delle insidie nel secondo approccio che tutti gli avvocati di lingue sono a conoscenza?
Assolutamente d'accordo sul fatto che la prima scelta sia migliore poiché rende l'intento più ovvio e non costa nulla. Evita anche "fall-through" potenzialmente scorretti in cui vengono valutati più casi di compilatore/piattaforma. –