devo parte di codice come di seguito:non #ifdef funziona come previsto con le intestazioni precompilate
#define FEATURE_A 1
void function()
{
// some code
#ifdef FEATURE_A
// code to be executed when this feature is defined
#endif
// some code
}
Il programma non eseguire codice all'interno #ifdef - #endif. Ma quando cambio #ifdef a #ifndef e rimuovi la macro #define, il codice viene eseguito. Il codice seguente funziona come previsto.
//#define FEATURE_A 1
void function()
{
// some code
#ifndef FEATURE_A
// code to be executed when this feature is defined
#endif
// some code
}
Qualcuno può spiegare il motivo per cui nel primo codice caso all'interno #ifdef - #endif non eseguito e nel secondo caso funziona? Qualcuno può dirmi quale impostazione potrebbe essere sbagliata?
Non sono sicuro se questa materia, sto usando Visual Studio 2010.
Grazie in anticipo
UPDATE: Quando ho pulito e ri-run, il secondo, inoltre, non lavora. il suo unico show in editor come codice che abilita.
Quando definisco macro in progetto-> proprietà-> Proprietà di configurazione-> c/C++ -> Preprocessore, entrambi funzionano bene.
Sei sicuro che non si dispone di 'FEATURE_A' #undef da qualche parte? – mvp
Se si desidera vedere il codice dopo la preelaborazione compilare con il flag '-E' – aaronman
È necessario pubblicare un intero programma che presenti questo comportamento, poiché altrimenti non ha alcun senso. –