Pregunta

Se dice en página de MSDN para C ++ expresiones constantes que:

constantes no integral debe ser convertido (ya sea explícitamente o implícitamente) a tipos enteros para ser legal en una expresión constante. Por lo tanto, el siguiente código es legal:

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

Al menos en VC ++ 10.0 la segunda línea produce: "C2057 error: se espera expresión de la constante". Entonces, ¿es legal en algún otro compilador o es la página de MSDN simplemente mal?

¿Fue útil?

Solución

Según 5,19 / 1:

Un integrante constante-expresión lata implicar sólo literales (2.13), enumeradores, variables de const o miembros de datos estáticos de integrante o tipos de enumeración inicializados con expresiones constantes (8,5), no tipo parámetros de plantilla de integral o tipos de enumeración, y sizeof expresiones. literales flotantes (2.13.3) pueden aparecer sólo si son echado a integrante o la enumeración tipos .

Desde mi entender el código no es válido, mientras que el siguiente es legal:

char chArray[(int)11.0];

Otros consejos

Eso no es de acuerdo legal de estándar de C ++. Ver 5.19 / 2 para las reglas en la especificación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top