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.
avviso C28753: Basarsi su un ordine non definito di valutazione dei parametri
C/C++ consente al compilatore di generare codice per valutare i parametri effettivi in qualsiasi ordine e i compilatori x86 e Arm tendono a selezionare ordini diversi. Il codice che si basa su un ordine specifico può comportarsi in modo diverso su piattaforme diverse.
Un errore comune è l'uso di puntatori intelligenti in cui l'operatore address-of & ha effetti collaterali, nelle chiamate come segue:
sp->Foo(&sp);
Le chiamate all'operatore di accesso ai membri :> e & dell'operatore possono verificarsi in entrambi gli ordini. Di conseguenza, gli effetti collaterali dell'operatore & possono verificarsi prima o dopo l'operatore - viene chiamato>. Questo avviso rileva queste chiamate a buggy per evitare comportamenti diversi tra le piattaforme.
Esempio di
L'esempio seguente genera questo avviso.
sp->Foo(&sp)
Nell'esempio di codice seguente viene evitato questo avviso.
SmartPtr spTemp;
sp->Foo(&spTemp);
sp = spTemp;