Probleme de déclaration multiple
Bonjour à tous!
J'ai un soucis assez étonnant:
J'ai trois fichiers comme ainsi:
Le fichier main.cpp
Code:
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.hpp
Code:
1 2 3 4 5 6
| #ifndef TEST_HPP_INCLUDED
#define TEST_HPP_INCLUDED
#warning double déclaration
char* efafzadazdzaeezzaaze;
#endif // TEST_HPP_INCLUDED |
Le fichier test.cpp
Code:
#include "test.hpp"
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'"
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?