Avatar ·

¿Cuándo se debe escribir la palabra clave inline para funciones y métodos en C++?

¡Hola a todos! Soy un desarrollador principiante de C++ y constantemente me atormenta la pregunta sobre la palabra clave inline. Creo entender que "sustituye" el código de la función en el lugar de la llamada para evitar la sobrecarga de la llamada. Pero en la práctica, veo que los compiladores modernos (GCC, Clang, MSVC) a menudo deciden por sí mismos si inline la función o no, incluso si no escribí inline. Y viceversa, si escribo inline, el compilador puede ignorarlo y no hacer inline. Al final, estoy confundido. Aquí hay un ejemplo: ```cpp // Archivo utils.h int square(int x) { return x * x; } // Archivo main.cpp #include "utils.h" int main() { int a = square(5); return 0; } ``` Si incluyo este archivo de encabezado en varios archivos .cpp, el linker dará un error de definición múltiple. Me dijeron que necesito agregar inline. ¿Pero por qué? Después de todo, square es una función pequeña, y el compilador ya puede hacer inline de ella. Y si agrego inline, ¿qué cambiará? O en otro caso: tengo una función grande en una clase. Si yo