Bonjour à tous!
J'ai un soucis assez étonnant:
J'ai trois fichiers comme ainsi:
Le fichier main.cpp
Le fichier test.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <iostream> #include "test.hpp" int main() { std::cout << "Hello world!" << std::endl; return 0; }
Le fichier test.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #ifndef TEST_HPP_INCLUDED #define TEST_HPP_INCLUDED #warning double déclaration char* efafzadazdzaeezzaaze; #endif // TEST_HPP_INCLUDED
Une fois la compilation, j'ai "double déclaration" qui s'affiche 2 fois, et forcement j'ai un message d'erreur "multiple definition of `efafzadazdzaeezzaaze'"
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include "test.hpp"
J'utilise Code::blocks et GCC sous windows (MinGW).
Apres recherche il s'avere que le fichier test.hpp est compilé une fois lors de la compilation de main.cpp, puis une seconde fois lors de la compilation de test.cpp
Ce qui m'etonne c'est que la définition de la macro pour l'entete ne change rien...
Quelqu'un aurait-il une explication?
Partager