Atelier C et C++
clang compile dans votre navigateur — rien n'est envoyé nulle part. Et il est réglé pour dire ce qu'aucun TP ne dit : case hors du tableau, variable non initialisée, division par zéro, avec le numéro de ligne.
Partir d'un TP ou d'un exemple
Chargement…
Le séparateur central élargit l'éditeur sur la console. — ou F1.
Six fautes que votre PC ne vous dira pas, et comment cet atelier les nomme
Un programme qui compile sans un mot et qui affiche n'importe quoi : c'est la situation la plus coûteuse du premier semestre, parce qu'il n'y a rien à lire pour comprendre. Cet atelier compile avec clang — le même compilateur que sous macOS et dans beaucoup d'entreprises — mais il ajoute une instrumentation que personne n'active en cours. Résultat : la faute est nommée, avec sa ligne.
| La faute | Un gcc ordinaire | Cet atelier |
|---|---|---|
Case hors du tableaut[7] sur int t[5] |
Rien. Il lit la mémoire du voisin et continue. | « Case hors du tableau : indice 7 », ligne et colonne. |
| Variable jamais initialisée | Une valeur différente à chaque exécution. | Avertissement à la compilation, et à l'exécution un nombre reproductible que l'atelier reconnaît et explique. |
Le & oublié dans scanf |
Rien, sans -Wall. |
« Le & est oublié dans scanf », avec la règle et son exception. |
| Division par zéro | Le programme meurt sans dire où. | « Division par zéro », ligne et colonne. |
return manquant |
Rien. La fonction renvoie ce qui traînait. | Le chemin fautif est nommé à la compilation. |
| Boucle sans fin | Le terminal se fige. | Arrêt au bout de 5 secondes, et la question à se poser. |
Le programme tourne dans votre navigateur, jamais sur un serveur : rien de
ce que vous écrivez ne quitte votre appareil. La machine est en 32 bits —
un pointeur y occupe donc 4 octets, contre 8 sur votre PC. C'est la seule
différence visible, et elle ne se remarque que sur sizeof(int *).
Les fichiers ouverts avec fopen existent le temps de l'exécution,
et leur contenu est affiché sous la console à la fin.
Compilateur clang 8.0.1 et éditeur de liens lld, portés
en WebAssembly par le projet wasm-clang (Apache 2.0 avec exception LLVM),
bibliothèque standard wasi-libc et libc++. Environ 60 Mo téléchargés
une seule fois, puis conservés par le navigateur. Les licences sont livrées à côté
du moteur : outils/c/LICENCE-llvm.txt et
outils/c/LICENCE-wasm-clang.txt.
