Bonjour à tous!
J'ai un soucis assez étonnant:

J'ai trois fichiers comme ainsi:

Le fichier main.cpp

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.hpp

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
Le fichier test.cpp
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?