Microsoft KB Archive/148318

= FIX: Using #define NOGDI Results in Compilation Syntax Errors =

Article ID: 148318

Article Last Modified on 12/9/2003

-

APPLIES TO


 * Microsoft Visual C++ 2.2
 * Microsoft Visual C++ 4.0 Standard Edition
 * Microsoft Visual C++ 4.1 Subscription
 * Microsoft Visual C++ 4.2 Professional Edition

-



This article was previously published under Q148318



SYMPTOMS
Compiling a source file that contains the following code: #define NOGDI #include 

results in several syntax errors such as these:   winuser.h(8577) : error C2501: 'LOGFONTA' : missing decl-specifiers winuser.h(8577) : error C2146: syntax error : missing ';' before identifier 'lfFont'



CAUSE
GDI-specific types like LOGFONTA are not defined when NOGDI is defined. However, header files like Winuser.h and Imm.h have structures that contain the GDI-specific types without the surrounding "#ifndef NOGDI"/"#endif" pair. The compiler generates syntax error for the GDI-specific types inside these structures.



RESOLUTION
Do not use #define NOGDI, or edit the system header files that produce the syntax errors to add the "#ifndef NOGDI"/"#endif" pair around the structures that contain the GDI-specific types.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ version 5.0.

Additional query words: kbVC400bug

Keywords: kbbug kbfix kbvc500fix kbarttypeinf KB148318

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.