Leider sind in C const
Variablen nicht wirklich const.
Unten sind die Auszüge von c99 Standard.
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.
Die Konstanten sind wie folgt definiert:
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')
Der Standard konstante Ausdrücke wie folgt definiert: So
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.
, c
und a
nicht konstant ist Ausdrücke und nicht verwendet werden kann, wie Initialisierer in Ihrem Fall.
Blick auf das Panel auf der rechten Seite dieser Frage das schon oft gefragt wurde. Bitte durchsuchen Sie diese Website, bevor Sie fragen. –
Ich kann Ihren Code gut kompilieren. Welchen Compiler/System benutzen Sie? – none
@gokcehan: verwenden Sie zufällig einen C++ - Compiler? –