2011-02-15 17 views
8

According to MSDN Visual C++ puede emitir advertencia C4711: función X seleccionada para expansión en línea si el compilador decide alinear una función que no se marcó en línea.¿Cuál es el uso de C4711 "función seleccionada para expansión en línea" Advertencia de Visual C++?

No veo cómo esta advertencia puede ser útil. Supongamos que compilo mi código y veo esta advertencia. ¿Ahora que? ¿Por qué me importaría?

+0

No estoy muy seguro de por qué las personas publican respuestas que dicen que "no está en mi defecto". No, Visual Studio se establece por defecto en el nivel de advertencia 3. Yo * siempre * lo cambio a '/ Pared '. Nunca me paré a pensar que los demás no hicieron lo mismo ... Esta es una gran pregunta; la única explicación que he podido encontrar es que podría darte pistas sobre algún error sutil que podría causar (pero parece bastante rápido). –

Respuesta

11

No está activado por defecto. Puede activarlo si por alguna razón desea saber cuándo las funciones están en línea. Esto puede ser relevante si, por ejemplo, el tamaño del código tiene una prima grave, o si esperaba saltar a la función desde fuera del módulo, o si necesita que el ensamblaje se vea de cierta manera. También puede ayudar a rastrear errores de generación de código.

Es puramente informativo.

+2

+1, buena respuesta informativa! ;) – sjr

+0

uno podría esperar que el mensaje puramente informativo no detuviera la compilación cuando '/ Werror' (o lo que sea que cambie MS, no parezco recordar) esté en:/ –

+1

@Matthieu: Si lo desea, lo hará . La mayoría de la gente no quiere, es por eso que está apagado por defecto. Pero si considera que es una advertencia lo suficientemente importante como para detener la compilación, puede activar la advertencia. –

Cuestiones relacionadas