win32 visual studio programa instalar hacer con como application c++ c visual-studio winapi

c++ - programa - win32 visual studio 2017



Error de compilación extraño al tratar con Winnt.h (1)

Cuando intento compilar un archivo que incluye winnt.h a través de windows.h, aparece el siguiente error:

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 : ''&''

Señalan las siguientes líneas en Winnt.h

extern "C++" // templates cannot be declared to have ''C'' linkage template <typename T, size_t N> char (*RtlpNumberOf( UNALIGNED T (&)[N] ))[N]; #define RTL_NUMBER_OF_V2(A) (sizeof(*RtlpNumberOf(A)))

¿Alguna idea de lo que está pasando?

Mi compilador

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved.


Hay al menos dos formas de hacer esto. El primero es simplemente incluir windows.h en la parte superior de todos sus archivos. Luego incluya winnt.h solo si lo necesita. Sin embargo, esto me parece demasiado: no veo la necesidad de incluir todo esto en todos los archivos.

Lo que hago es esto en la parte superior (lo primero) en mis archivos de encabezado C / C ++.

#ifndef __wtypes_h__ #include <wtypes.h> #endif #ifndef __WINDEF_ #include <windef.h> #endif

Esto le proporcionará los tipos de datos, las definiciones y las API fundamentales de Windows. Es posible que también deba agregar lo siguiente:

#ifndef _WINUSER_ #include <winuser.h> #endif #ifndef __RPC_H__ #include <rpc.h> #endif

WinNT es un animal especial, no lo incluyas si incluir los archivos anteriores funciona para ti. Si lo necesita, wtypes.h después de wtypes.h y `windef.h ''

Si esto no funciona, compruebe sus rutas de inclusión y macros predefinidas para ver si pueden estar rompiendo su compilación.

Saludos, Foredecker