Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Confronto potenziale di una costante con un'altra costante
Osservazioni:
Questo avviso indica un potenziale confronto di una costante con un'altra costante, ovvero codice ridondante. È necessario verificare che la finalità sia acquisita correttamente nel codice. In alcuni casi, è possibile semplificare la condizione di test per ottenere lo stesso risultato.
Nome dell'analisi del codice: CONST_CONST_COMP
Esempio
Il codice seguente genera questo avviso perché vengono confrontate due costanti:
#define LEVEL
const int STD_LEVEL = 5;
const int value =
#ifdef LEVEL
10;
#else
5;
#endif
void f()
{
if( value > STD_LEVEL)
{
// code...
}
else
{
// code...
}
}
Il codice seguente illustra un modo per correggere l'avviso usando C++17 if constexpr.
#define LEVEL
const int STD_LEVEL = 5;
const int value =
#ifdef LEVEL
10;
#else
5;
#endif
void f()
{
if constexpr( value > STD_LEVEL)
{
// code...
}
else
{
// code...
}
Il codice seguente illustra un modo per correggere questo avviso usando le istruzioni #ifdef per determinare il codice da eseguire se C++17 non è disponibile:
#define LEVEL
const int STD_LEVEL = 5;
const int value =
#ifdef LEVEL
10;
#else
5;
#endif
void f ()
{
#ifdef LEVEL
{
// code...
}
#else
{
// code...
}
#endif
}