2009-12-08 7 views
0

Je trouve que C++ est un langage très controversé dans le monde de Microsoft. Par défaut, nous avons ISO C++, puis Microsoft a Managed C++ et maintenant C++ CLI.Quel langage C++ utilise Visual Studio 2008 (ou version ultérieure)?

Je connais juste le standard (ISO) C++. Je ne connais pas la version de C++ de Microsoft.

Je suis confus au sujet de l'interprétation d'un code C++ par Visual Studio 2008 (ou version ultérieure). C'est pourquoi j'utilise des outils GNU pour compiler mes programmes. Mais j'aime vraiment Visual Studio.

Quels paramètres dois-je faire si je veux seulement utiliser

  1. STRICTLY ISO C++
  2. Managed C++ (son dépréciée mais je pense qu'ils soutiennent encore par souci de compatibilité descendante)
  3. CLI C++ (pour plate-forme .NET)

Je souhaite créer des assemblys natifs à l'aide de C++ non gérés. Alors, y a-t-il autre chose que je devrais faire?

+0

être conscient que même la compilation C++ pour les applications natives (non gérés), que le compilateur a encore quelques différences subtiles au compilateur GNU. Ils sont répertoriés dans le fichier d'aide en tant que 'Microsoft specific'. – Toad

+0

C'est exactement pourquoi je suis inquiet à propos de l'utilisation de Visual Studio/Visual C++ & C'est exactement pourquoi je veux savoir comment puis-je lui demander de «STRICTLY» suivre quelque chose. – claws

+2

Non, "spécifique à Microsoft" ne signifie pas "Différent de GCC". Ils signifient "différent de la norme ISO C++". GCC fait la même chose, et a également un certain nombre d'extensions et de fonctionnalités non supportées. – jalf

Répondre

7

Tout est dans les paramètres de construction:

Common Language Runtime Support (/ clr) - ajouter ou retirer le support CLR

Advance Compile code C++ (/ TP) - pour choisir si C++ ou c. Langue: Désactiver l'extension de la langue - utilisez cette option pour forcer ANSI.

+0

où sont ces? – claws

+1

Propriétés du projet. Faites un clic droit sur un projet C++ et sélectionnez les propriétés. – jalf

+0

Juste pour confirmer: # 1 "MFC utilise ISO C++" # 2 "géré C++ et C++/CLI sont pour .NET et C++/CLI est le remplacement de C++ géré". Droite? – claws

0

Lorsque vous demandez Visual Studio pour faire un projet C++, il est un projet C++. C++/CLI est une langue différente.

VS2008 et les versions antérieures ont implémenté C++ 03. Comme presque tous les autres compilateurs, il y a des bits de la norme qui ne sont pas suivis à la lettre (quelques exceptions, les export La recherche de mots-clés ou de mots-clés en deux phases est celle à laquelle je peux penser), et certaines extensions propriétaires sont également ajoutées

GCC, et la plupart des gros compilateurs, font exactement la même chose, donc ce n'est pas un cas de Microsoft étant "mal" en tant que tel.Les extensions peuvent être désactivées, vous laissant avec un compilateur raisonnablement conforme aux normes

VC2010 ajoute un certain nombre de fonctionnalités C++ 0x (et au moins i Dans la version bêta, je n'ai pas trouvé d'option pour les désactiver), donc d'un strict point de vue de la conformité C++ 03, il sera moins conforme.

La réponse de Dani vous indique déjà les paramètres à modifier pour activer/désactiver les différents dialectes de la langue.

Questions connexes