Hasta hace un tiempo, mi base de código estaba muy cerca de #include
infierno. Cada vez que cambio un archivo .h medianamente importante, prácticamente todos los archivos se vuelven a compilar.
La razón principal de tal alta dependencia del encabezado es que tengo muchas funciones pequeñas que deben estar en línea y tuve la impresión de que para trabajar en línea necesitan estar en la misma unidad de traducción que el código de llamada, por lo que necesitan estar en el encabezado Para la función en línea incluso para compilar otros encabezados deben incluirse también en el encabezado, ad infimum.C++: funciones en línea y generación de código de tiempo de enlace
Ingrese link-time code generation (en Visual Studio). Una de las principales ventajas declaradas de esto es que ahora la función en línea puede cruzar unidades de traducción.
Pero todavía soy dudoso. ¿Cómo puedo estar realmente seguro de que estas funciones realmente estén incluidas? Me doy cuenta de que el compilador básicamente puede hacer lo que quiera sin importar dónde defina la función.
¿Hay alguna manera de verificar qué se incluye?
¿Por qué es tan esencial que estas funciones estén en línea? Eso parece extraño. Por lo general, desea que las funciones estén en línea * cuando benefician el rendimiento *, que el compilador normalmente puede determinar mejor que usted – jalf
@ Rüdiger Stevens - En realidad, es posible. Consulte la opción ': PGINSTRUMENT' de VC++ en el indicador/LTCG. http://msdn.microsoft.com/en-us/library/xbf3tbeh%28VS.80%29.aspx –