0

Notre code inclut vector, qui inclut memory, qui inclut intrin.h de Microsoft, mais nous avons un intrin.h de notre propre chemin d'inclusion. Par conséquent memory prend notre intrin.h au lieu de celui du système, et ne parvient pas à compiler.Recherche d'une solution de contournement pour le conflit de noms de fichier avec le fichier d'en-tête Visual C++

Nos deux intrin.h et Microsoft ont été autour depuis des années, mais nous n'avons jamais eu un conflit avant - VS 2010 introduit une nouvelle dépendance. Déplacer ou renommer notre intrin.h serait une douleur, et je préfère l'éviter.

Est-ce que je peux persuader MSVC de regarder dans le répertoire include du système avant le nôtre? Modification memory dire:

#include "intrin.h" 

plutôt que

#include <intrin.h> 

fonctionne, mais je ne veux pas toute l'équipe d'avoir à modifier leur environnement Visual Studio (et gardez-les modifiés dans le visage du service packs, etc.)

Une autre façon de contourner ce problème?

Répondre

0

Que diriez-vous simplement d'ajouter le répertoire include système au chemin d'inclusion avant votre répertoire?

+0

On dirait que cela casserait son code qui a besoin de sa copie de intrin.h. –

+0

@Neil: Bonne idée, mais VS ne me laisse pas le faire! Si j'ajoute "$ (VCInstallDir) include" au chemin d'inclusion, alors VS le change en ". \ $ (VCInstallDir) include" et il échoue. Même si je mets le chemin complet (ce qui est un peu méchant), il le change en un chemin relatif, qui échouera quand quelqu'un sortira le projet à une profondeur de répertoire différente. Grr! VS est trop intelligent pour son propre bien! – RichieHindle

+0

@sean: Non, cela fonctionnerait car un code a besoin d'un intrin.h et d'autre besoin de l'autre, mais aucun code n'a besoin des deux. Si j'ai un moyen de contrôler lequel est ramassé, je peux l'appliquer de manière sélective au code qui en a besoin. – RichieHindle

Questions connexes