2009-06-24 12 views
0

Ich habe etwas Quellcode, den ich mit VS2008 kompilieren möchte, aber es gibt viele Fehler, die ich beheben muss. Nun gibt es einige Aufzählungen wie:Wie man Definitionen ignoriert (VS2008)

enum 
{ 
BACKGROUND = 0x00000001, 
WEAPON  = 0x00000002, 
TRANSPARENT = 0x00000004 
} 

Das Problem ist, dass TRANSPARENT ist definiert als:

#define TRANSPARENT   1 

in wingdi.h

, dass ein Compiler-Fehler wie verursachen:

error C2143: syntax error : missing '}' before 'constant' 

Ist es möglich, diesen Fehler zu beheben, ohne das Feld in der e num und ohne die wingdi.h Entfernen aus der enthält (ich weiß nicht, wo es enthalten ist ..)

Antwort

2

können Sie

#undef TRANSPARENT 

verwenden, aber das kann Fehler an anderer Stelle verursachen, wenn die WinGDI danach TRANSPARENT verwendet wird. A (chaotisch) Abhilfe könnte sein:

#ifdef TRANSPARENT 
#define _TRANSPARENT TRANSPARENT 
#undef TRANSPARENT 
#endif 

und nach dem Code:

#ifdef _TRANSPARENT 
#define TRANSPARENT _TRANSPARENT 
#endif 
2

Wenn Sie nicht den Wert TRANSPARENT von wingdi.h verwenden, können Sie einfach hinzufügen:

#undef TRANSPARENT

vor der Enumeration (dies ist nur ein Workaround, benennen Sie die TRANSPARENT besser in der enum).