C'est probablement une question stupide, mais je m'interroge depuis un moment. Est-ce que C (ou tout autre langage de bas niveau, d'ailleurs) a même la source, ou le compilateur est-il la partie qui "fait tout le travail", y compris l'analyse? Si tel est le cas, différents compilateurs ne pourraient-ils pas utiliser différents dialectes C? Où le facteur stdlib intervient-il? J'aimerais vraiment savoir comment cela fonctionne.
Réponses
Trop de publicités?Le langage C n'est pas un logiciel mais une norme définie, de sorte que l'un ne dirais pas que c'est open-source, mais plutôt que c'est un standard ouvert.
Il y a une foule de différents compilateurs de C cependant, et beaucoup de ceux qui sont en effet open-source. L'exemple le plus notable est GCC le compilateur C, qui est de tous les termes de la Licence Publique Générale de GNU (GPL), une licence open-source.
Il y a plus d'options. Watcom est open-source, par exemple. Il n'y a pas de pénurie de l'open-source les compilateurs C, mais sans doute le plus répandu, au moins dans le non-monde Windows, est GCC.
Pour Windows, votre meilleur pari est probablement Watcom ou GCC en utilisant Cygwin ou MinGW.
C est juste une langue, et une standardisée à cela aussi. C'est plutôt le compilateur qui "fait tout le travail". Différents compilateurs ont eu différents dialectes; Avant la norme C99 ANSI, vous aviez des choses comme Borland C et d’autres compilateurs concurrents qui implémentaient le langage C de façon fantastique.
stdlib
est simplement une collection convenue de bibliothèques standard devant être présentes dans toute implémentation ANSI C.
À ajouter sur les autres réponses:
Concernant les différents dialectes -- il y a quelques fonctionnalités supplémentaires ajoutées à C qui sont spécifiques de compilateur. Vous pouvez fournir l'option de ligne de commande -std=...
de gcc pour spécifier le C standard que vous souhaitez utiliser, chacun a de légères variantes/ajouts à la syntaxe, la plus commune est sans doute c99
.
Chaque compilateur tend à mettre en œuvre quelques extras, par exemple, typeof()
n'est pas dans la norme et donc les compilateurs n'ont pas à mettre en œuvre mais il est néanmoins utile et la plupart des compilateurs fournir. Voici une liste de gcc C extensions
Le stdlib est un ensemble de fonctions spécifiées dans la norme. Un peu comme les compilateurs, les stdlib peut avoir différentes implémentations. L'implémentation GNU est open source, comme c'est gcc, mais il y a d'autres compilateurs et peut être d'autres implémentations de stdlib qui sont à code source fermé.