Langage C, premier cours de base
Pas de prise de tête, commencez ici !
Créez un fichier ex1.c contenant le court texte suivant :
main(){}
soit 8 caractères, n’oubliez pas d’aller à la ligne à la fin du texte (toujours une ligne vide à la fin du texte d’un programme) ; compilez-le avec gcc :
gcc ex1.c
exécutez-le, s’il n’y a pas eu d’erreur de compilation :
cromdub@Muir:~$ ./a.out
cromdub@Muir:~$
NB :
- pour exécuter un programme, local à un répertoire, ne pas oublier de le faire précéder de ./ qui signifie « ici ! » ; c’est inutile pour les programmes du système, dont le chemin d’accès est connu, par exemple ‹ gcc ›.
- le compilateur lui donne le nom implicite a.out puisque nous n’avons rien défini
- pas d’affichage, notre programme ne faisant rien, mais du coup il le fait très bien et sans erreur possible !
- sa taille est de 6535 octets.
Pour un programme « qui ne fait rien », n’est ce pas un peu trop ?
Le programme a besoin de donner des instructions (et d’en recevoir) au système (noyau Linux), et le noyau au microprocesseur : adresse d’installation en mémoire, allocations de mémoire, appels de librairies statiques ou dynamiques ; puis à la fin il faut des instructions pour laisser la mémoire et le système propres, « comme vous l’avez trouvé en entrant ».
Nommons notre programme explicitement :
gcc -o ex1 ex1.c
la forme est : gcc -o nom_exécutable nom_programme.c
Ne pourrait-on pas faire « un petit quelque chose » qui se voit à l’écran, au moins ?
Facile, ajoutons un salut, appelons-le ex2.c :
main()
{
printf("Bonjour le monde !") ;
}
On compile :
cromdub@Muir:~$ gcc -o ex2 ex2.c
ex2.c: In function "main":
ex2.c:4: attention : incompatible implicit declaration of built-in function "printf"
cromdub@Muir:~$
Ah, la première erreur de compilation ! Et ce ne sera pas la dernière !
L’instruction ‹ printf › est inconnue. Oui, j’ai fait exprès. Le langage C contient lui-même très peu d’instructions ; ici il ne connaît même pas d’instructions d’entrée - sortie pour les textes. Pour cela il faut lui indiquer dans quelle « librairie » il trouvera printf : c’est dans « stdio.h ». Voici comment le programme s’écrit correctement :
[code]#include <stdio.h>
main()
{
printf(« Bonjour le monde ! ») ;
}[/code]
Compilation et exécution :
cromdub@Muir:~$ gcc -o ex2 ex2.c
cromdub@Muir:~$ ./ex2
Bonjour le monde !cromdub@Muir:~$
Ah, et le saut de ligne à la fin du texte ?? Comme ça ce n’est pas très joli.
Rajoutons-le ; il y a deux façons de faire :
1 - à la fin du texte lui-même : printf(« Bonjour le monde !\n ») ;
2 - sur une ligne séparée :
printf(« Bonjour le monde ! ») ;
printf("\n") ;
Compilation, exécution en une seule ligne :
cromdub@Muir:~$ gcc -o ex2 ex2.c && ./ex2
Bonjour le monde !
cromdub@Muir:~$
L’instruction du bash && dit d’exécuter ce qui la suit seulement s’il n’y a pas eu d’erreur avant elle.
Ce premier cours vous montre que ce n’est pas trop difficile ; comme tout, il faut le courage de se lancer et avoir dès le début du succès avec des exercices simples ; puis il faut apprendre et adapter à votre projet. Mais là, comme disait Kipling, « c’est une autre histoire » ! Ou encore : « Pour arriver au but, il faut commencer par faire le premier pas ».