Les articles de GNU/Linux Magazine Hors-Série N°70

Image promotionnelle
Introduction au langage C
Article mis en avant

Préface

« The power of assembly language and the convenience of… assembly language »

C'est en ces mots que le regretté Dennis Ritchie a un jour décrit le langage qu'il a lui-même créé en 1972 avec, par la suite, la participation de Ken Thompson et Brian Kernighan que l'on peut aisément qualifier, tous trois, comme étant également les pères d'UNIX. Le C, ce langage de programmation impérative, procédurale et structurée est, ni plus, ni moins, pour le monde de l'informatique, ce qu'est la roue pour le monde moderne.

Découvrez le langage de référence de la programmation impérative.
Même si elles ne font pas vraiment partie du langage C à proprement parler, puisqu'elles appartiennent au préprocesseur, les macros sont des outils qui peuvent s'avérer fort pratiques.
Certaines fonctionnalités mal aimées du C tendent à être également mal connues. Elles recèlent cependant souvent des applications inattendues.
Lors d'un développement, vous êtes peut-être déjà tombé sur le message d'erreur incompréhensible suivant : « Dereferencing type-punned pointer will break strict-aliasing rules ». Ce qui pourrait se traduire par « Déréférencer un pointeur pointant sur deux types différents rompt les règles d'aliasing strictes ». Ce qui n'est toujours pas très clair.
Le langage C dispose d'opérateurs permettant de tester, modifier et effectuer des opérations au niveau du bit. Ces opérations sont souvent réservées à des utilisations restreintes, alors qu'elles sont ultra-rapides et ont des applications quelques fois insoupçonnées. Une restriction toutefois est que ces opérateurs ne s'appliquent qu'à des entiers (la plupart du temps non signés).
Dans une série d'articles dédiés à l'IDE Eclipse [GLMF n°159], je vous ai présenté la programmation graphique en C++ avec la librairie graphique GTK+. Nous allons ici l’utiliser avec le langage C, langage natif de ce toolkit.
Vous avez besoin d'une bibliothèque C graphique, capable d'utiliser plusieurs types de systèmes d'affichage (X, framebuffer, OpenGL, etc.), fonctionnant aussi bien sur PC que sur système embarqué, incluant des fonctionnalités avancées comme un système de description d'interfaces, plusieurs langages de scripts intégrés, le tout reposant sur des fondations solides et des bibliothèques utilitaires adaptées ? Ne cherchez plus ! C'est des EFL qu'il s'agit !
Lors du dernier numéro hors-série sur le langage C, nous vous avions proposé d'étendre Python avec des modules C. Nous avions alors introduit quelques bases. Aujourd'hui, nous vous proposons le contraire : utiliser des modules Python au sein de vos applications en C.
Si votre projet prend de l'ampleur, qu'il risque d'être utilisé dans d'autres pays que le vôtre, il convient alors de présenter une interface dans la langue de l'utilisateur. Pour cela, il faut, entre autres, traduire tous les intitulés textes de votre programme. On dit que l'on « régionalise » l'application. Voyons quels sont les outils qui vont nous aider dans cette tâche...
Les spécificateurs de format ou format specifiers sont ces éléments (%) permettant, comme leur nom l'indique, de spécifier la manière de formater une donnée avec certaines fonctions comme scanf() et printf(). Cette dernière, rappelons-le, est utilisée pour transférer du texte, des valeurs ou des résultats d'expressions sur la sortie standard STDOUT.
Le point d'entrée d'un programme en C est la fonction main(). Il existe cependant des situations où l'on souhaiterait procéder à un ensemble d'actions, soit avant, soit après main(). Ceci peut être utile, par exemple, lorsqu'il y a systématiquement des opérations à appliquer pour bien finir un programme.