Question

J'ai activé les intrinsèques dans les paramètres d'optimisation du compilateur, cependant, le code résultant pour interlockEdExchange génère des appels dans Kernel32.dll plutôt que de produire un assemblage en ligne. Ceci est particulièrement problématique car la fonction n'est pas disponible sur les versions de Windows avant Vista.

La Documentation MSDN États "Cette fonction est implémentée à l'aide d'un compilateur intrinsèque dans la mesure du possible". Est-il possible d'amener le compilateur à utiliser du code intrinsèque réel pour interlockedexchange?

Était-ce utile?

La solution

Les intrinsèques verrouillés nécessitent un préfixe de soulignement (ou #pragma intrinsic), donc vous voulez utiliser _InterlockedExchange, vous devrez également inclure intrin.h

En outre, vous lisez pleinement votre devis, il est dit ceci:

Cette fonction est implémentée à l'aide d'un compilateur intrinsèque dans la mesure du possible. Pour plus d'informations, consultez le fichier d'en-tête winbase.h et _Interlockedexchange.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top