Avatar ·

Cómo usar extern para compartir variables entre archivos C++?

¡Hola! Empecé a estudiar C++ y estoy tratando de dividir mi programa en varios archivos. Tengo tres archivos: main.cpp, functions.cpp y functions.h. En functions.h declaré una variable global int global_counter = 0; y varias funciones. En functions.cpp definí esas funciones, que modifican global_counter. En main.cpp incluyo functions.h e intento usar global_counter, pero el compilador da el error "multiple definition of `global_counter`". Escuché algo sobre la palabra clave extern, pero no entiendo completamente cómo aplicarla correctamente. ¿Puedes explicarlo con un ejemplo simple? Aquí está mi código actual: // functions.h #ifndef FUNCTIONS_H #define FUNCTIONS_H int global_counter = 0; void increment(); void print_counter(); #endif // functions.cpp #include "functions.h" #include void increment() { global_counter++; } void print_counter() { std::cout << global_counter; } // main.cpp #include "functions.h" int main() { increment(); print_counter(); }