Desafortunadamente, en C const
las variables no son realmente const.
A continuación se muestran los extractos del estándar c99.
6.7.8 Initialization
- All the expressions in an initializer for an object that has static storage duration shall be constant expressions or string literals.
Las constantes se definen como sigue:
6.4.4 Constants
Syntax
constant:
integer-constant (e.g. 4, 42L)
floating-constant (e.g. 0.345, .7)
enumeration-constant (stuff in enums)
character-constant (e.g. 'c', '\0')
La norma define expresiones constantes como sigue:
6.6 Constant expressions
(7) More latitude is permitted for constant expressions in initializers. Such a constant expression shall be, or evaluate to, one of the following:
— an arithmetic constant expression,
— a null pointer constant,
— an address constant, or
— an address constant for an object type plus or minus an integer constant expression.
(8) An arithmetic constant expression shall have arithmetic type and shall only have operands that are integer constants, floating constants, enumeration constants, character constants, and sizeof expressions. Cast operators in an arithmetic constant expression shall only convert arithmetic types to arithmetic types, except as part of an operand to a sizeof operator whose result is an integer constant.
Por lo tanto, c
y a
no son expresiones constante y no se puede utilizar como inicializadores en tu caso.
mirada en el panel de la derecha de esta pregunta a este se ha hecho muchas veces antes. Por favor, busca en este sitio antes de preguntar. –
Puedo compilar su código muy bien. ¿Qué compilador/sistema estás usando? – none
@gokcehan: ¿estás usando un compilador C++, por casualidad? –