Quando usar extern em C++: variáveis globais e divisão de código
Olá, colegas! Estou estudando C++ e não consigo entender a keyword `extern`. Li a documentação, mas ainda fico confuso.
O problema é que estou escrevendo um pequeno programa dividido em vários arquivos. Tenho `main.cpp`, `utils.cpp` e `utils.h`. Quero declarar uma variável global em `utils.cpp` e depois usá-la em `main.cpp`. O compilador reclama de "multiple definition" ou "undefined reference". Tentei diferentes abordagens, mas sem sucesso.
Aqui está um exemplo do meu 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;
}
```
O compilador dá o erro: "multiple definition of `globalCounter`". Entendo que isso acontece porque estou definindo a variável no header file.