7 votes

C : Comportement du mot clé `const`.

On m'a dit que si je code en ANSI C, je dois déclarer dans l'ordre que les variables seront utilisées, affirmer que les pointeurs ne sont pas nuls et que les indices sont dans les limites, et initialiser juste avant l'utilisation de la variable.

Si je déclare un const Puis-je l'initialiser après un bloc d'assertions et de code ?

En Java, les initialisations finales doivent avoir lieu au moment de la déclaration, mais les implémentations ANSI C sont-elles cohérentes avec le fait que je puisse initialiser un fichier de type const une fois, mais pas nécessairement au moment de la déclaration ?

1voto

Pascal Cuoq Points 39606

Si vous parlez de diviser une définition

const int x = 2;

en deux parties :

const int x;

x = 2;

J'ai bien peur que ce ne soit pas possible en C.

Si j'étais vous, j'essaierais de m'assurer que je comprends l'intention des règles de codage que vous décrivez. Je doute que des règles de codage saines empêchent d'initialiser des variables (même des variables non-const).

En réponse à divers commentaires :

const int * p;

es no une déclaration d'une variable const. C'est une déclaration d'une variable pointeur non-const vers un const int.

Vous pouvez déclarer

extern const int x;

mais vous pouvez toujours ne pas initialiser x après avoir exécuté du code, des contrôles d'assertion, etc.

0voto

wardw Points 19

Si vous souhaitez vous débarrasser de la constance sur la LHS utilisez ceci :

const int n = 0;

*((int*)&n) = 23;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X