Quand utiliser extern en C++ : variables globales et séparation du code
Bonjour, collègues ! J'apprends le C++ et je n'arrive pas à comprendre le mot-clé `extern`. J'ai lu la documentation, mais je suis toujours confus.
Le problème est que j'écris un petit programme divisé en plusieurs fichiers. J'ai `main.cpp`, `utils.cpp` et `utils.h`. Je veux déclarer une variable globale dans `utils.cpp`, puis l'utiliser dans `main.cpp`. Le compilateur se plaint de "multiple definition" ou "undefined reference". J'ai essayé différentes approches, mais sans résultat.
Voici un exemple de mon code :
**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;
}
```
Le compilateur donne l'erreur : "multiple definition of `globalCounter`". Je comprends que c'est parce que je définis la variable dans le fichier d'en-tête.