当试图通过windows.h编译包含winnt.h的文件时,我收到以下错误:
MyGl.cpp ..\microsoft sdks\windows\v6.0a\include\winnt.h(964) : error C2988: unrecognizable template declaration/definition ..\microsoft sdks\windows\v6.0a\include\winnt.h(964) : error C2059: syntax error : '&'
他们指向Winnt.h中的以下行
extern "C++" // templates cannot be declared to have 'C' linkage templatechar (*RtlpNumberOf( UNALIGNED T (&)[N] ))[N]; #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))
对于发生了什么的任何想法?
我的编译器:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved.
Foredecker.. 12
至少有两种方法可以做到这一点.第一种是简单地包含windows.h
在所有文件的顶部.然后winnt.h
仅在您需要时包括.但是,我发现这有点太多了 - 我不认为需要在每个文件中包含所有这些goo.
我所做的就是在我的C/C++头文件中的最顶层(第一件事).
#ifndef __wtypes_h__ #include#endif #ifndef __WINDEF_ #include #endif
这将为您提供数据类型,定义和基本Windows API.您可能还需要添加以下内容:
#ifndef _WINUSER_ #include#endif #ifndef __RPC_H__ #include #endif
WinNT是一种特殊的动物 - 如果包含上述文件适合您,请不要包含它.如果确实需要它,请在wtypes.h
"windef.h" 之后加入它.
如果这不起作用,请检查包含路径和预定义宏,看看这些是否会破坏您的构建.
此致,Foredecker
至少有两种方法可以做到这一点.第一种是简单地包含windows.h
在所有文件的顶部.然后winnt.h
仅在您需要时包括.但是,我发现这有点太多了 - 我不认为需要在每个文件中包含所有这些goo.
我所做的就是在我的C/C++头文件中的最顶层(第一件事).
#ifndef __wtypes_h__ #include#endif #ifndef __WINDEF_ #include #endif
这将为您提供数据类型,定义和基本Windows API.您可能还需要添加以下内容:
#ifndef _WINUSER_ #include#endif #ifndef __RPC_H__ #include #endif
WinNT是一种特殊的动物 - 如果包含上述文件适合您,请不要包含它.如果确实需要它,请在wtypes.h
"windef.h" 之后加入它.
如果这不起作用,请检查包含路径和预定义宏,看看这些是否会破坏您的构建.
此致,Foredecker