FIX: Using #define NOGDI Results in Compilation Syntax Errors (148318)
The information in this article applies to:
- Microsoft Visual C++ 2.2
- Microsoft Visual C++ 4.0
- Microsoft Visual C++ 4.1
- Microsoft Visual C++ 4.2
This article was previously published under Q148318 SYMPTOMS
Compiling a source file that contains the following code:
#define NOGDI
#include <windows.h>
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.
Modification Type: | Major | Last Reviewed: | 12/9/2003 |
---|
Keywords: | kbArtTypeINF kbbug kbfix kbVC500fix KB148318 |
---|
|