que tienen una función que opera en el pedazo de datos (digamos, un int
), y quiero cambiarlo en lugar de pasar por una referencia a la valule. Como tal, tengo la función: void myFunction(int *thing) { ... }
. Cuando lo uso lo llamo así: myFunction(&anInt)
.¿GCC alineará una función que toma un puntero?
Como mi función se llama con frecuencia (pero de muchos lugares diferentes) Estoy preocupado por su rendimiento. La razón por la que lo he refactorizado en una función es la capacidad de prueba y la reutilización del código.
¿El compilador podrá optimizar la función, alineándola para operar directamente en mi variable anInt
?
Espero que responda esta pregunta con el espíritu que se le pide (es decir, no estoy preocupándome prematuramente por la optimización, tengo curiosidad por la respuesta). Del mismo modo, no quiero convertirlo en una macro.
¡Al menos con GCC 4.4.2, ni siquiera necesita ser marcado como 'en línea'! (Aunque el uso de 'static' evitará una copia adicional de la función en el binario generado.) – ephemient