2011-02-15 6 views
8

According to MSDN Visual C++ può emettere avviso C4711: funzione X selezionata per espansione in linea se il compilatore decide di incorporare una funzione che non è stata contrassegnata in linea.A cosa serve la funzione C4711 "selezionata per espansione in linea" Avviso Visual C++?

Non vedo come questo avviso possa essere utile. Supponiamo che io compili il mio codice e veda questo avviso. Ora cosa? Perché dovrei preoccuparmi?

+0

Non sono davvero sicuro del motivo per cui le persone pubblicano le risposte che è "non sul mio valore predefinito". No, Visual Studio ha come impostazione predefinita il livello di avviso 3. I * always * lo cambia in '/ Wall'. Non ho mai smesso di pensare che tutti gli altri non abbiano fatto lo stesso ... Questa è una grande domanda; l'unica spiegazione che sono riuscito a inventare è che potrebbe indurti in qualche sottile insinuazione del bug che potrebbe causare (ma sembra abbastanza azzeccato). –

risposta

11

Non è attivo per impostazione predefinita. Puoi accenderlo se per qualche motivo ti piacerebbe sapere quando le funzioni sono in linea. Questo può essere rilevante se, ad esempio, la dimensione del codice ha un prezzo molto elevato, o se ci si aspettava di entrare nella funzione dall'esterno del modulo, o se si ha bisogno che l'assieme assuma un certo aspetto. Può anche aiutare a rintracciare i bug di generazione del codice.

È puramente informativo.

+2

+1, bella risposta informativa! ;) – sjr

+0

si potrebbe sperare che un messaggio puramente informativo non fermi la compilazione quando '/ Werror' (o qualunque sia l'opzione MS, non riesco a ricordare) è su:/ –

+1

@Matthieu: Se lo vuoi, sarà . La maggior parte delle persone non vuole, ecco perché è disattivata per impostazione predefinita. Ma se ritieni che sia un avvertimento abbastanza importante per interrompere la compilazione, sei libero di attivare l'avviso. –