12
votes

Où est défini Win32 et comment puis-je inclure cette définition dans mon projet?

Je comprends un en-tête tiers et un fichier source dans mon projet.

En haut de l'en-tête, il y a ceci: p> xxx pré>

Le problème est que #If défini (Win32) échoue et la compilation échoue lorsque vous essayez de #include. H que je ne veux pas faire. p>

J'ai un projet tiers qui fonctionne avec ce fichier d'en-tête, c'est-à-dire que Win32 est défini et que cela n'essaie pas d'inclure dans Visual Studio, j'ai fait "Aller à la définition" sur "Win32" et a été conduit à la définition suivante à Windefs.h. P>

#define WIN32


0 commentaires

6 Réponses :


8
votes

dépend de votre configuration de projet. Win32 est défini dans les fichiers de l'en-tête Windows, mais vous pouvez également le transmettre au compilateur ("-DWIN32" pour GCC par exemple). Essayez-le et voyez si cela compile.


2 commentaires

Dans Visual Studio, vous pouvez entrer cela via les propriétés du projet dans les "Directives de préprocesseur supplémentaires" ou quelque chose.


Cela m'a aidé! Merci! La propriété s'appelle "Définitions de préprocesseur" et Win32 doit être là (pour les projets Win32).



7
votes

Visual Studio a la définition intégrée _win32. MINGW-GCC a Win32 et _Win32 intégré de sorte que le projet était probablement testé à l'aide de GCC. Vous pouvez ajouter

#if defined(_WIN32) && !defined(WIN32)
#define WIN32
#endif


0 commentaires

0
votes

Vous pouvez simplement inclure les fichiers d'en-tête Windows (Windows.h) avant d'inclure l'en-tête tiers - comme vous l'avez déjà découvert Win32, il est défini là-bas mais technique, il pourrait être défini n'importe où (afin que le projet tiers n'inclut pas la Les en-têtes Windows vérifient s'il est défini dans le projet Compiler Settins directement).

BTW Il y a aussi une définition _win32 qui est définie par le compilateur, il est peut-être une meilleure idée de rechercher cela définir si le code est compilé sous Windows;


0 commentaires

5
votes

Vérifiez votre inclusion. Je suppose que l'en-tête tiers est inclus avant la Windows.h. Donc, dans votre principal.cpp ou égal à ce que cela devrait être xxx

et non l'inverse.

espère que cela aide.


0 commentaires

0
votes

pour ceux qui recherchent des réponses à la

Où est Win32 défini

une partie des questions, j'ai trouvé cela défini dans:

minwindef.h

ole2.h

Note, je n'ai aucune confiance que ce sont les seuls endroits que cela est défini. Je m'attends à ce qu'il y ait probablement d'autres fichiers où il est défini. Néanmoins, je pensais que cela pourrait aider certaines personnes.


0 commentaires

0
votes

Certains Win32 définis dans le compilateur. Tout comme ceci, si vous utilisez le GCC pour Windows, Win32 est défini. Si vous utilisez le GCC pour Linux, Win32 n'est pas défini :)
Donc, la macros est un commutateur. Vous pouvez la définir pour utiliser quelque chose et ne pas la définir pour inutiliser quelque chose.


0 commentaires