Bonjour à tous, je suis confronté à un soucis de Linker que j'ai un peu de mal à comprendre. Je m'explique, je suis sous visualstudio2010, mon projet contient un fichier "define.h" que j'inclus dans plusieurs autres headers. Define.h contient (notamment) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
#ifndef __DEFINES
#define __DEFINES
 
[...]
 
#define _DEBUG
 
void DEBUG_LOG(char* format, ...)
{
#ifdef _DEBUG && __DEBUG
	std::string str(format);
	str+="\n";
	va_list args;
	va_start(args,format);
	vprintf(str.c_str(), args);
#endif
}
 
#endif
Or, à la compilation, je suis gratifié du message error LNK2005: "void __cdecl DEBUG_LOG(char *,...)" (?DEBUG_LOG@@YAXPADZZ) déjà défini(e) dans Camera.obj. Ce que je ne comprends pas, c'est que le
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
#ifndef __DEFINES
#define __DEFINES
devrait normalement éviter ce problème de définition multiple, ce qui ne semble pas être le cas. Auriez vous des idées sur ce qui provoque cela ? N'hésitez pas à me demander plus de précisions si nécessaire.