He estado probando llamadas a funciones en línea en C++.C++ funciones en línea usando GCC - ¿por qué la LLAMADA?
Thread model: win32
gcc version 4.3.3 (4.3.3-tdm-1 mingw32)
BS en el directorio C++ wirtes lenguaje de programación:
El comitente en línea es una sugerencia para el compilador que se debe tratar de generar el código [...] en línea en lugar de que se establece el código para la función una vez y luego llamar a través del mecanismo de llamada de función habitual.
Sin embargo, he descubierto que el código generado simplemente no está en línea. Hay un CALL instrction para la función isquare.
alt text http://i42.tinypic.com/8ys3f4.jpg
Por qué sucede esto? ¿Cómo puedo usar las funciones en línea?
EDIT: Las opciones de línea de comandos usados:
**** Build of configuration Debug for project InlineCpp ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\InlineCpp.o ..\src\InlineCpp.cpp
g++ -oInlineCpp.exe src\InlineCpp.o
¿Ha comprobado qué código se genera cuando sube el nivel de optimización? Además, intente agregar el parámetro '-finline-functions' al compilar el código – Christoph
. Publique las opciones de línea de comando que usó con gcc para compilar el código. (Si no está utilizando una de las funciones -O3 o -finline, entonces gcc ignorando "en línea" no me sorprende). – timday
el problema es el -O0 que tiene en los indicadores del compilador, lo que significa ** no ** optimizaciones. Cambie eso a -O2 y estará perfectamente alineado. –