Article: Q148318
Product(s): Microsoft C Compiler
Version(s): 2.2,4.0,4.1,4.2
Operating System(s):
Keyword(s): kbGenInfo kbVC kbVC500fix kbArtTypeINF
Last Modified: 03-AUG-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual C++, versions 2.2, 4.0, 4.1, 4.2
-------------------------------------------------------------------------------
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.
Additional query words: kbVC400bug
======================================================================
Keywords : kbGenInfo kbVC kbVC500fix kbArtTypeINF
Technology : kbVCsearch kbVC400 kbAudDeveloper kbVC220 kbVC410 kbVC420
Version : :2.2,4.0,4.1,4.2
Issue type : kbbug
Solution Type : kbfix
=============================================================================