Cuándo usar extern en C++: variables globales y división de código
¡Hola, colegas! Estoy aprendiendo C++ y no logro entender la palabra clave `extern`. Leí la documentación, pero aún me confundo.
El caso es que estoy escribiendo un programa pequeño que está dividido en varios archivos. Tengo `main.cpp`, `utils.cpp` y `utils.h`. Quiero declarar una variable global en `utils.cpp` y luego usarla en `main.cpp`. El compilador se queja de "multiple definition" o "undefined reference". Probé diferentes opciones, pero sin éxito.
Aquí hay un ejemplo de mi código:
**utils.h:**
```cpp
int globalCounter = 0;
void incrementCounter();
```
**utils.cpp:**
```cpp
#include "utils.h"
void incrementCounter() {
globalCounter++;
}
```
**main.cpp:**
```cpp
#include "utils.h"
#include
int main() {
incrementCounter();
std::cout << globalCounter << std::endl;
return 0;
}
```
El compilador da un error: "multiple definition of `globalCounter`". Entiendo que esto se debe a que defino la variable en el archivo de encabezado.