France-ioi / codecast

Codecast C learning platform (formerly fioi-recorder).
MIT License
30 stars 17 forks source link

Variables initialisées à 0 #54

Open ghost opened 7 years ago

ghost commented 7 years ago

Dans le MOOC ABC du langage C il y a vraiment beaucoup de questions sur les histoires de variables non initialisées. Quitte à initialiser les variables dans le codecast, ne vaudrait-il pas mieux les initialiser à 42 plutôt qu'à 0 ?

epixode commented 7 years ago

Codecast n'initialise pas les variables, l'observation vient du fait que la mémoire contient initialement 0 partout.

Initialiser avec l'octet 0x2A est une option, d'autres motifs plus traditionnels (0xDEADBEEF, 0xBBADBEEF) seraient peut-être plus appropriés.

ghost commented 7 years ago

J'aime bien 42 parce que je suis un fan de Douglas Adams mais les bœufs morts ou vvilains me semblent très bien aussi ;-).

remisharrock commented 7 years ago

clang a une option pour détecter les variables non initialisées: on pourrait afficher un message dans le codecast quand les variables ne sont pas initialisées à la compilation ? A la limite une solution simple : -Wall -Werror ; il existe aussi -Wuninitialized , au pire -Weverything !

ghost commented 7 years ago

Et on peut même transformer le warning en error en utilisant le pragma:

#pragma clang diagnostic error "-Wuninitialized"