Comment activer le C++0x fonctionnalités de Visual studio? [Initialiseur de Listes de prise en charge]
J'ai eu un peu de code que j'ai développé sur Ubuntu et maintenant j'essaie de le compiler sous Windows 7 (MS VS 2010).
vector<float> tmp;
....
tmp = {3.0,4.5,9.4};
Cela me donne une erreur de syntaxe
error C2143: syntax error : missing ';' before '{'
Est-ce parce que Visual studio ne prend pas en charge cette fonctionnalité ? ou devrais-je être permettant le commutateur dans les propriétés. J'ai la "Plate-forme d'Outils de" propriété est définie sur "v100."
Merci.
- Pour la référence C++0x soutien dans les compilateurs gcc, vérifiez Apache stdcxx de la page: wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport - seulement GCC 4.4+ a initialiseur de listes.
Vous devez vous connecter pour publier un commentaire.
Le C++0x fonctionnalités sont activées par défaut sur Visual Studio 2010 compilateur C++. Il ne faut pas extra comme par exemple les interrupteurs à utiliser les lambdas,
auto
, etc ... Si vous obtenez cette erreur, c'est parce qu'en toute probabilité, il n'est pas pris en charge.MODIFIER
Basé sur cet article MSDN, initialiseur de listes ne sont pas l'une des 6 fonctions prises en charge en 2010
Visual Studio 2010 ne prend pas en charge l'initialisation des listes.
Regarder ici pour les prises en charge C++0x fonctionnalités de Visual Studio 2010
Visual Studio 2012 ne les supporte pas, trop.
Vous pouvez trouver qu'il C++11 caractéristiques qui sont mis en œuvre dans Visual Studio 2012 /VS11 ici et ici.
La première mise en œuvre de l'initialiseur liste est disponible dans le Compilateur Visual C++ en novembre 2012 CTP.
La première vraie version de initialisation de la liste seront dans Visual Studio 2013.
Même s'ils y étaient, ce code ne marche pas car il affecte une liste d'initialiseur, qui n'est pas encore un vecteur, à un objet existant nommé 'tmp'. Vous pouvez affecter à des vecteurs comme ceci:
ou
mais pas
Par la voie: la fonctionnalité est toujours manquant dans VS2012.