Question

Il dit à msdn page pour c ++ expressions constantes :

  

constantes doit être non intégral   converti (explicitement ou   implicitement) à des types intégral à   juridique dans une expression constante.   Par conséquent, le code suivant est   juridique:

const double Size = 11.0;
char chArray[(int)Size];

Au moins sur VC ++ 10.0 la deuxième ligne produit: "C2057 d'erreur: expression constante attendu". Donc, est-il légal sur un autre compilateur ou est la page msdn tout simplement faux?

Était-ce utile?

La solution

Selon 5.19 / 1:

  

An intégrante expression constante can   ne contiennent que des littéraux (2.13),   recenseurs, variables const ou   des membres de données statiques d'intégrale ou   types d'énumération initialisés avec   expressions constantes (8,5), de type non   paramètres de modèle entier ou   types d'énumération et sizeof   expressions. littéraux flottants   (2.13.3) ne peut apparaître que si elles sont   à jeter intégrale ou énumération   types .

De ma compréhension du code est invalide, alors que le suivant est légal:

char chArray[(int)11.0];

Autres conseils

Ce n'est pas selon la norme juridique C ++. Voir 5,19 / 2 pour les règles de la spécification.

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