web-dev-qa-db-fra.com

Devrais-je définir les deux _Win32 et _win64 dans la construction 64 bits?

Lorsque nous ajoutons une configuration de 64 bits à partir d'un projet 32 ​​bits qui existait déjà, Visual Studio copie les configurations 32 bits par défaut. Vs même copies _ win32
[.____] Tous mes projets de 64 bits définissent aussi _ win32 Maintenant, malgré qu'ils (64 bits pes) ne peuvent jamais exécuter sur 32 bits Windows. C'est très inconfortable pour moi.

Je voudrais supprimer le _ win32 Si cela n'a pas de problème. Je ne suis pas sûre de ça.
[.____] Est-ce que ça va si je supprimais le _ win32 Définition?

29
Benjamin

_Win32 ne veut pas dire ce que vous pensez. Cela signifie "j'utilise l'API Windows". Le 32 postfix a été ajouté à l'époque de Windows NT 3.1 pour le rendre distinct de l'API 16 bits utilisée dans la version Windows 3. Ce terme est tombé hors de faveur en raison du problème de l'hypothèse. Vous pouvez voir cela à Stackoverflow.com, la balise [Win32] vous emmène à [Winapi].

Ne l'enlevez pas, vous utilisez l'API Windows.

56
Hans Passant

La documentation pour les Macros prédéfinies dit:

_ win32: défini pour les applications pour Win32 et Win64. Toujours défini.

_ WIN64: défini pour les applications pour Win64.

Donc non seulement _WIN32 TOUJOURS être défini, cela ne pose aucun problème dans des applications 64 bits. Par conséquent, je suggérerais que vous ne le supprimez pas.

37
Frédéric Hamidi

Vous ne devriez jamais définir l'un d'eux.

Le compilateur les définira selon le cas.

9
Ben Voigt

_Win32: défini pour les applications pour Win32 et Win64. Toujours défini.

_Win64: défini pour les applications pour Win64.

Plus de détails: Macros prédéfinies .

Pour le mettre simplement, Win32/_Win32 est utilisé pour indiquer si vous utilisez Windows (pour une application de système croisée), tandis que _Win64 est utilisé pour indiquer à l'environnement de compilation est X86 ou X64.

Si vous souhaitez savoir si votre application est exécutée sous Windows X64, vous devez utiliser Windows API ISWOW64Process .

3
Dana Yan