{"id":3601,"date":"2025-08-06T12:28:15","date_gmt":"2025-08-06T11:28:15","guid":{"rendered":"https:\/\/workboot.fr\/ciela\/?page_id=3601"},"modified":"2026-02-18T16:22:42","modified_gmt":"2026-02-18T15:22:42","slug":"tp_c-5-les-fonctions","status":"publish","type":"page","link":"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/","title":{"rendered":"TP5_C  les fonctions et librairies"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>\ud83d\udd52 : 3 h maximum<\/code><\/pre>\n\n\n\n<nav aria-label=\"Table des mati\u00e8res\" class=\"wp-block-table-of-contents\"><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#prerequis\">Pr\u00e9requis:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#but\">But:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#repertoire-de-travail\">R\u00e9pertoire de travail:<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#presentation-des-fonctions-en-c\">Pr\u00e9sentation des fonctions en C<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#fonctions-ecrites-pour-nous\">Fonctions \u00e9crites pour nous<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#static-et-dynamic-statique-et-dynamique\">static et dynamic (statique et dynamique)<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#on-va-fabriquer-des-fonctions-maison\">On va fabriquer des fonctions (maison)<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#la-fonction-affiche-bonjour\">La fonction affiche_bonjour()<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#avec-gdb-on-va-pouvoir-explorer-ce-code\">Avec gdb on va pouvoir explorer ce code. <\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#la-fonction-qui-a-besoin-d-un-argument\">La fonction qui a besoin d&rsquo;un argument<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#avec-gdb-on-va-pouvoir-explorer-ce-code\">Avec gdb on va pouvoir explorer ce code.<\/a><\/li><\/ol><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#la-fonction-qui-retourne-une-valeur-entiere\">La fonction qui retourne une valeur enti\u00e8re<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#avec-gdb-explorer-le-code\">Avec gdb explorer le code<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#la-fonction-qui-a-besoin-d-un-argument-et-retourne-un-octet-char\">la fonction qui a besoin d&rsquo;un argument et retourne un octet (char)<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#creer-une-librairie\">Cr\u00e9er une librairie<\/a><ol><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#reunir-nos-fonctions\">R\u00e9unir nos fonctions<\/a><\/li><\/ol><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#prototypage-de-fonctions\">Prototypage de fonctions <\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#on-va-decouper-notre-projet-magie\">On va d\u00e9couper notre projet ! magie !<\/a><\/li><li><a class=\"wp-block-table-of-contents__entry\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/#notre-librairie-a-nous\">Notre librairie a nous !<\/a><\/li><\/ol><\/nav>\n\n\n\n<h2 id=\"prerequis\" class=\"wp-block-heading\">Pr\u00e9requis:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>utilisation de Monia<\/li>\n\n\n\n<li>cours de C avec gcc et gdb<\/li>\n\n\n\n<li>utilisation de vi<\/li>\n\n\n\n<li>cr\u00e9ation d&rsquo;un r\u00e9pertoire <\/li>\n<\/ul>\n\n\n\n<h2 id=\"but\" class=\"wp-block-heading\">But:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cr\u00e9ation de projet C<\/li>\n\n\n\n<li>Cr\u00e9ation d&rsquo;une librairie statique en C<\/li>\n<\/ul>\n\n\n\n<h2 id=\"repertoire-de-travail\" class=\"wp-block-heading\">R\u00e9pertoire de travail:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">~\/Works\/TP5_C\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A la fin du TP on doit avoir <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">etudiant@ordi:~\/Works\/TP5_C$ tree\n\u251c\u2500\u2500 ex1\n\u2502   \u251c\u2500\u2500 ex1\n\u2502   \u2514\u2500\u2500 ex1.c\n\u251c\u2500\u2500 ex2\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ex2\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 ex2.c\n\u251c\u2500\u2500 ex3\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ex3\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 ex3.c\n\u251c\u2500\u2500 ex4\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ex4\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 ex4.c\n\u251c\u2500\u2500 ex5\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ex5\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 ex5.c\n\u251c\u2500\u2500 ex6\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ex6\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 ex6.c\n\u251c\u2500\u2500 ex7\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ex7\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 ex7.c\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 lib.h\n\u251c\u2500\u2500 ex8\n|   \u251c\u2500\u2500 ex8\n|   \u251c\u2500\u2500 ex8.c\n|   \u251c\u2500\u2500 lib.h\n\u2514\u2500\u2500 ex9\n    \u251c\u2500\u2500 ex9\n    \u251c\u2500\u2500 ex9.c\n    \u251c\u2500\u2500 lib.c\n    \u251c\u2500\u2500 lib.h\n    \u2514\u2500\u2500 lib.o\n\n9 directories, 18 files\netudiant@ordi:~\/Works\/TP5_C$\n<\/pre>\n\n\n\n<h2 id=\"presentation-des-fonctions-en-c\" class=\"wp-block-heading\">Pr\u00e9sentation des fonctions en C<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00ab En C, la v\u00e9ritable puissance ne vient pas d&rsquo;\u00e9crire tout le code en un seul bloc, mais de le d\u00e9couper en fonctions, comme des bo\u00eetes \u00e0 outils r\u00e9utilisables qui rendent vos programmes plus clairs, plus faciles \u00e0 corriger et \u00e0 construire. \u00bb<\/p>\n\n\n\n<h2 id=\"fonctions-ecrites-pour-nous\" class=\"wp-block-heading\">Fonctions \u00e9crites pour nous<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>r\u00e9pertoire: ex1 et code ex1.c<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la librairie <strong>stdio.h<\/strong> on va utiliser la fonction printf() , bien utile et de la librairie <strong>math.h<\/strong> la fonction sqrt()<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ex1.c:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*  ex1.1  *\/\n#include &lt;stdio.h>\n#include &lt;stdlib.h>\n#include &lt;math.h>\n\nint main() {\n    double nombre = 25.0;\n    double racine = sqrt(nombre);  \/* Fonction de math.h *\/\n    printf(\"Racine de %.1f = %.1f\", nombre, racine);  \/* Fonction de stdio.h *\/\n    return EXIT_SUCCESS;\n}<\/pre>\n\n\n\n<h3 id=\"static-et-dynamic-statique-et-dynamique\" class=\"wp-block-heading\">static et dynamic (statique et dynamique)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#pour compiler ce code\netudiant@ordi:~\/Works\/TP_C\/fonctions\/ex1\/$gcc ex1.c -o ex1 -Wall -ansi -pedantic -lm -g\netudiant@ordi:~\/Works\/TP_C\/fonctions\/ex1\/$ls -l\ntotal 24\n-rwxr-xr-x 1 bruno bruno 17320 24 nov.  16:13 ex1\n-rw-r--r-- 1 bruno bruno   267 24 nov.  15:59 ex1.c<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on obtient ici  un ex\u00e9cutable de : 17320 octets!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@eordi:~\/Works\/TP_C\/fonctions\/ex1\/$ ldd ex1\n\tlinux-vdso.so.1 (0x00007ffd0a5b5000)\n\tlibm.so.6 =&gt; \/lib\/x86_64-linux-gnu\/libm.so.6 (0x00007f13f09a9000)\n\tlibc.so.6 =&gt; \/lib\/x86_64-linux-gnu\/libc.so.6 (0x00007f13f07c7000)\n\t\/lib64\/ld-linux-x86-64.so.2 (0x00007f13f0ab5000)\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#pour compiler ce code\netudiant@ordi:~\/Works\/TP_C\/fonctions\/ex1\/$gcc ex1.c -o ex1 -Wall -ansi -pedantic -static -lm -g\netudiant@ordi:~\/Works\/TP_C\/fonctions\/ex1\/$ ls -l\ntotal 752\n-rwxr-xr-x 1 bruno bruno 763824 24 nov.  16:16 ex1\n-rw-r--r-- 1 bruno bruno    267 24 nov.  15:59 ex1.c\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ex\u00e9cutable de 763824 Octets ! 44 fois plus gros !!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/fonctions\/ex1\/$ ldd ex1\n\tn'est pas un ex\u00e9cutable dynamique\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En fait quand dans la premi\u00e8re compilation on a mis -lm , et cela veut dire et pas le mot cl\u00e9 -static devant  donc par d\u00e9faut c&rsquo;est compiler et li\u00e9 avec la librairie dynamique libm.so.6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/fonctions\/ex1\/$ whereis libm.so.6\nlibm.so.6: \/usr\/lib\/x86_64-linux-gnu\/libm.so.6 \/usr\/lib32\/libm.so.6\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Une librairie dynamique (<code>.so<\/code>&nbsp;= Shared Object)<\/strong>&nbsp;est un fichier binaire contenant du code compil\u00e9 qui peut \u00eatre&nbsp;<strong>partag\u00e9 en m\u00e9moire<\/strong>&nbsp;entre plusieurs programmes simultan\u00e9ment.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/fonctions\/ex1\/$ whereis libm.a\nlibm.a: \/usr\/lib\/x86_64-linux-gnu\/libm.a \/usr\/lib32\/libm.a\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le cas avec l&rsquo;option -static la libraire math\u00e9matique est ajout\u00e9e \u00e0 votre code ! plus gros donc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il est pr\u00e9f\u00e9rable d&rsquo;utiliser la librairie dynamique pour ne pas encombrer la m\u00e9moire. (par d\u00e9faut)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">remarque:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">libm.a et libm.so contiennent les ex\u00e9cutables des fonctions en C de la librairie math.h<\/p>\n\n\n\n<h2 id=\"on-va-fabriquer-des-fonctions-maison\" class=\"wp-block-heading\">On va fabriquer des fonctions (maison)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">on va voir un petit panel de fonction, pour comprendre le m\u00e9canisme des fonctions. Il existe \u00ab\u00a0une infinit\u00e9\u00a0\u00bb de fonctions&#8230;<\/p>\n\n\n\n<h3 id=\"la-fonction-affiche-bonjour\" class=\"wp-block-heading\">La fonction affiche_bonjour()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">on va voir une fonction des plus simple.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">la fonction <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void affiche_bonjour(void)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">cette fonction n&rsquo;a besoin d&rsquo;aucun argument (void) et ne rendra rien , c&rsquo;est pourquoi le return ne renvoi rien, cette fonction est volontairement simple. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dans le r\u00e9pertoire : ex2 fichier: ex2.c<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*  ex2.c   *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\nvoid affiche_bonjour(void)\n{\n        printf(\"Bonjour!\\n\");\n        return;\n}\n\nint main (int argc, char **argv)\n{\n        affiche_bonjour();\n        affiche_bonjour();\n        return EXIT_SUCCESS;\n}\n<\/pre>\n\n\n\n<h4 id=\"avec-gdb-on-va-pouvoir-explorer-ce-code\" class=\"wp-block-heading\">Avec gdb on va pouvoir explorer ce code. <\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">un point d\u2019arr\u00eat premi\u00e8re instruction de main<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>break main<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on va pouvoir entrer dans la fonction en faisant step (s)  dans gdb <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">si on fait next (n) on va \u00e0 la ligne suivante sur le code source , alors step on va dans la fonction..<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 id=\"la-fonction-qui-a-besoin-d-un-argument\" class=\"wp-block-heading\">La fonction qui a besoin d&rsquo;un argument<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dans le r\u00e9pertoire : ex3 fichier: ex3.c<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*  ex3.c *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\nvoid affiche_nombre_entier(int nombre)\n{\n        printf(\"Nombre= %d \\n\",nombre);\n        return;\n}\n\nint main (int argc, char **argv)\n{\n        affiche_nombre_entier(22);\n        return EXIT_SUCCESS;\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on voit que notre fonction est de la forme<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void affiche_nombre_entier(int nombre)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">cette fonction \u00e0 besoin d&rsquo;un param\u00e8tre ici nombre de type entier (int) et ne retourne rien (vide , void)<\/p>\n\n\n\n<h4 id=\"avec-gdb-on-va-pouvoir-explorer-ce-code\" class=\"wp-block-heading\">Avec gdb on va pouvoir explorer ce code.<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">un point d\u2019arr\u00eat premi\u00e8re instruction de main<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>break main<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on va pouvoir entrer dans la fonction en faisant step (s)  dans gdb <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">si on fait next (n) on va \u00e0 la ligne suivante sur le code source , alors step on va dans la fonction..<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 id=\"la-fonction-qui-retourne-une-valeur-entiere\" class=\"wp-block-heading\">La fonction qui retourne une valeur enti\u00e8re<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>int retourne(void)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dans le r\u00e9pertoire : ex4 fichier: ex4.c<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*  ex4.c  *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\nint retourne(void)\n{\n        \/* on ne fait pas grand ici chose mais on peut *\/                      \n        return 2025;\n}\n\nint main (int argc, char **argv)\n{\n        printf (\"Ma fonction retourne: %d \\n\",retourne());                     \n        return EXIT_SUCCESS;\n}\n<\/pre>\n\n\n\n<h4 id=\"avec-gdb-explorer-le-code\" class=\"wp-block-heading\">Avec gdb explorer le code<\/h4>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 id=\"la-fonction-qui-a-besoin-d-un-argument-et-retourne-un-octet-char\" class=\"wp-block-heading\">la fonction qui a besoin d&rsquo;un argument et retourne un octet (char)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dans le r\u00e9pertoire : ex5 fichier: ex5.c<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>char lettre_suivante(char lettre)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pour montrer la puissance de ce langage on va utiliser ici des type char ,  et le code ASCII A <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/* ex5.c *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\nchar lettre_suivante(char lettre)\n{\n        \/* grand calcul de la lettre suivante *\/                               \n        lettre=lettre+1;\n        return lettre;\n}\n\nint main (int argc, char **argv)\n{\n        printf (\"La lettre suivant le A est : %c \\n\",lettre_suivante('A'));    \n        return EXIT_SUCCESS;\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Avec gdb explorer le code<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 id=\"creer-une-librairie\" class=\"wp-block-heading\">Cr\u00e9er une librairie<\/h2>\n\n\n\n<h3 id=\"reunir-nos-fonctions\" class=\"wp-block-heading\">R\u00e9unir nos fonctions<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">on va r\u00e9unir nos fonctions dans notre code <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Et utiliser ces fonctions dans le main comme il se doit !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>r\u00e9pertoire ex6 , fichier ex6.c<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*  ex6.c  *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\nvoid affiche_bonjour(void)\n{\n        printf(\"Bonjour!\\n\");\n        return;\n}\n\nvoid affiche_nombre_entier(int nombre)\n{\n        printf(\"Nombre= %d \\n\",nombre);\n        return;\n}\n\nint retourne(void)\n{\n        \/* on ne fait pas grand ici chose mais on peut *\/\n        return 2025;\n}\n\nchar lettre_suivante(char lettre)\n{\n        \/* grand calcul de la lettre suivante *\/\n        lettre=lettre+1;\n        return lettre;\n}\n\/* la belle librairie *\/\nint main (int argc, char **argv)\n{\n        affiche_bonjour();\n        affiche_nombre_entier(73);\n        printf(\" ma fonction retourne : %d \\n\",retourne());\n        printf (\"La lettre suivant le c est : %c \\n\",lettre_suivante('c'));\n        return EXIT_SUCCESS;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on constate ici que j&rsquo;ai une belle librairie de fonction ! (certes pas tr\u00e8s utile , juste \u00e0 but p\u00e9dagogique vous aurez des occasions d&rsquo;utiliser tous cela bien mieux)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>char lettre_suivante(char lettre)\nint retourne(void)\nvoid affiche_nombre_entier(int nombre)\nvoid affiche_bonjour(void)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ici on dispose  de nos 4 fonctions.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 id=\"prototypage-de-fonctions\" class=\"wp-block-heading\">Prototypage de fonctions <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le prototypage va servir au compilateur pour connaitre vos fonctions et les int\u00e9grer dans votre code<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>r\u00e9pertoire ex7 , fichier source :ex7.c<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*   ex7.c    *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\n\/* prototype des fonctions devant le main *\/\n\nvoid affiche_bonjour(void);\nvoid affiche_nombre_entier(int nombre);\nint retourne(void);\nchar lettre_suivante(char lettre);\n\nint main (int argc, char **argv)\n{\n        affiche_bonjour();\n        affiche_nombre_entier(73);\n        printf(\" ma fonction retourne : %d \\n\",retourne());\n        printf (\"La lettre suivant le c est : %c \\n\",lettre_suivante('c'));\n        return EXIT_SUCCESS;\n}\n\n\/* la belle librairie *\/\nvoid affiche_bonjour(void)\n{\n        printf(\"Bonjour!\\n\");\n        return;\n}\n\nvoid affiche_nombre_entier(int nombre)\n{\n        printf(\"Nombre= %d \\n\",nombre);\n        return;\n}\n\nint retourne(void)\n{\n        \/* on ne fait pas grand ici chose mais on peut *\/\n        return 2025;\n}\n\nchar lettre_suivante(char lettre)\n{\n        \/* grand calcul de la lettre suivante *\/\n        lettre=lettre+1;\n        return lettre;\n}\n                     <\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">pour que gcc puisse compiler le code , on a besoin de lui annoncer la forme de nos fonctions, on appel cela prototyper.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tester le code ,et conclure sur cette version .<\/p>\n\n\n\n<h2 id=\"on-va-decouper-notre-projet-magie\" class=\"wp-block-heading\">On va d\u00e9couper notre projet ! magie !<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dans le r\u00e9pertoire ex8 sources : lib.h et ex8.c<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">le fichier lib.h   sera inclus avec la commande pr\u00e9compilation #include \u00ab\u00a0lib.h\u00a0\u00bb<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*   ex8.c   *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\/* prototype des fonctions devant le main *\/\n#include \"lib.h\"\n\nint main (int argc, char **argv)\n{\n        affiche_bonjour();\n        affiche_nombre_entier(73);\n        printf(\" ma fonction retourne : %d \\n\",retourne());\n        printf (\"La lettre suivant le c est : %c \\n\",lettre_suivante('c'));\n        return EXIT_SUCCESS;\n}\n\n\/* la belle librairie *\/\nvoid affiche_bonjour(void)\n{\n        printf(\"Bonjour!\\n\");\n        return;\n}\n\nvoid affiche_nombre_entier(int nombre)\n{\n        printf(\"Nombre= %d \\n\",nombre);\n        return;\n}\n\nint retourne(void)\n{\n        \/* on ne fait pas grand ici chose mais on peut *\/\n        return 2025;\n}\n\nchar lettre_suivante(char lettre)\n{\n        \/* grand calcul de la lettre suivante *\/\n        lettre=lettre+1;\n        return lettre;\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">lib.h<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/* prototype des fonctions devant le main *\/\n#ifndef ma_lib_a_moi\n#define ma_lib_a_moi\nvoid affiche_bonjour(void);\nvoid affiche_nombre_entier(int nombre);\nint retourne(void);\nchar lettre_suivante(char lettre);\n#endif<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A quoi sert #ifndef et #define et #endif<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#pour compiler !\ngcc ex8.c -o ex8 -Wall -ansi -p\u00e9dantic -g<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ici le gcc va inclure le code (lib.h) fichier <strong>header<\/strong><\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 id=\"notre-librairie-a-nous\" class=\"wp-block-heading\">Notre librairie a nous !<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">imaginons que nous avons fait une librairie de fonctions tr\u00e8s utiles..<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">R\u00e9pertoire : ex9 fichiers sources : ex9.c , lib.h et lib.c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ex9.c va contenir le code ou il y a le main de notre code<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*  ex9.c   *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\/* prototype des fonctions devant le main *\/\n#include \"lib.h\"\n\nint main (int argc, char **argv)\n{\n        affiche_bonjour();\n        affiche_nombre_entier(73);\n        printf(\" ma fonction retourne : %d \\n\",retourne());\n        printf (\"La lettre suivant le c est : %c \\n\",lettre_suivante('c'));\n        return EXIT_SUCCESS;\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">notre fichier header <strong>lib.h<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*  lib.h    *\/\n#ifndef ma_lib_a_moi\n#define ma_lib_a_moi\nvoid affiche_bonjour(void);\nvoid affiche_nombre_entier(int nombre);\nint retourne(void);\nchar lettre_suivante(char lettre);\n#endif<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">et le fichier de nos fonctions :<strong> lib.c<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*  lib.c   *\/\n#include &lt;stdlib.h>\n#include &lt;stdio.h>\n\n\/* la belle librairie :) *\/\nvoid affiche_bonjour(void)\n{\n        printf(\"Bonjour!\\n\");\n        return;\n}\n\nvoid affiche_nombre_entier(int nombre)\n{\n        printf(\"Nombre= %d \\n\",nombre);\n        return;\n}\n\nint retourne(void)\n{\n        \/* on ne fait pas grand ici chose mais on peut *\/\n        return 2025;\n}\n\nchar lettre_suivante(char lettre)\n{\n        \/* grand calcul de la lettre suivante *\/\n        lettre=lettre+1;\n        return lettre;\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on va transformer notre librairie en .o fichier objet (rien a voir avec la programmation objet)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gcc -c lib.c <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on obtient un fichier objet (langage machine de nos fonctions)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">on peut voir ce que contient notre librairie <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/TP_C\/fonctions\/ex8$ objdump -t lib.o                                                                                                                                                       \n\nlib.o:     format de fichier elf64-x86-64\n\nSYMBOL TABLE:\n0000000000000000 l    df *ABS*  0000000000000000 lib.c\n0000000000000000 l    d  .text  0000000000000000 .text\n0000000000000000 l    d  .rodata        0000000000000000 .rodata\n0000000000000000 g     F .text  000000000000001a affiche_bonjour\n0000000000000000         *UND*  0000000000000000 puts\n000000000000001a g     F .text  000000000000002b affiche_nombre_entier\n0000000000000000         *UND*  0000000000000000 printf\n0000000000000045 g     F .text  000000000000000f retourne\n0000000000000054 g     F .text  000000000000001d lettre_suivante\n\n\netudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex8$\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">mais l\u2019int\u00e9r\u00eat ici et de lier les fichiers .<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">en ayant fait le fichier .o<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gcc ex9.c lib.o -o ex9 -Wall -ansi -pedantic -g<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">si on ne veut pas  garder le fichier .o<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gcc ex9.c lib.c -o ex9 -Wall -ansi -pedantic -g<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ce qui va nous donner dans les 2 cas .\/ex9 est un ex\u00e9cutable !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le fait d&rsquo;avoir un fichier .o va permettre de ne pas recompiler nos fonctions \u00e0 chaque fois .. si on l&rsquo; utilise souvent .<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex9$ .\/ex9\nBonjour!\nNombre= 73\n ma fonction retourne : 2025\nLa lettre suivant le c est : d\netudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex9$\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">on va r\u00e9aliser notre libraire statique , on pourra faire la manipulation juste par curiosit\u00e9.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex9$ ar rcs lib.a lib.o\netudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex9$ ar t lib.a\nlib.o\netudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex9$ <\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>etudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex8$ gcc ex9.c lib.a -o ex9 -Wall -ansi -pedantic -g\netudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex9$ .\/ex9 \nBonjour!\nNombre= 73 \n ma fonction retourne : 2025 \nLa lettre suivant le c est : d \netudiant@ordi:~\/Works\/TP5_C\/fonctions\/ex9$ \n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">le fichier .a , est une archive obtenu par ar (ici un seul .o)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pr\u00e9requis: But: R\u00e9pertoire de travail: ~\/Works\/TP5_C\/ A la fin du TP on doit avoir Pr\u00e9sentation des fonctions en C \u00ab En C, la v\u00e9ritable puissance ne vient pas d&rsquo;\u00e9crire tout [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-3601","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TP5_C les fonctions et librairies - workboot<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TP5_C les fonctions et librairies - workboot\" \/>\n<meta property=\"og:description\" content=\"Pr\u00e9requis: But: R\u00e9pertoire de travail: ~\/Works\/TP5_C\/ A la fin du TP on doit avoir Pr\u00e9sentation des fonctions en C \u00ab En C, la v\u00e9ritable puissance ne vient pas d&rsquo;\u00e9crire tout [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/\" \/>\n<meta property=\"og:site_name\" content=\"workboot\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-18T15:22:42+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/tp_c-5-les-fonctions\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/tp_c-5-les-fonctions\\\/\",\"name\":\"TP5_C les fonctions et librairies - workboot\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\"},\"datePublished\":\"2025-08-06T11:28:15+00:00\",\"dateModified\":\"2026-02-18T15:22:42+00:00\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/workboot.fr\\\/ciela\\\/tp_c-5-les-fonctions\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#website\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"name\":\"workboot\",\"description\":\"Open Source, Open Minds \",\"publisher\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#organization\",\"name\":\"workboot\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"contentUrl\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/logo_ciel-dorian-1.png\",\"width\":1024,\"height\":950,\"caption\":\"workboot\"},\"image\":{\"@id\":\"https:\\\/\\\/workboot.fr\\\/ciela\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TP5_C les fonctions et librairies - workboot","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/","og_locale":"fr_FR","og_type":"article","og_title":"TP5_C les fonctions et librairies - workboot","og_description":"Pr\u00e9requis: But: R\u00e9pertoire de travail: ~\/Works\/TP5_C\/ A la fin du TP on doit avoir Pr\u00e9sentation des fonctions en C \u00ab En C, la v\u00e9ritable puissance ne vient pas d&rsquo;\u00e9crire tout [&hellip;]","og_url":"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/","og_site_name":"workboot","article_modified_time":"2026-02-18T15:22:42+00:00","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/","url":"https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/","name":"TP5_C les fonctions et librairies - workboot","isPartOf":{"@id":"https:\/\/workboot.fr\/ciela\/#website"},"datePublished":"2025-08-06T11:28:15+00:00","dateModified":"2026-02-18T15:22:42+00:00","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/workboot.fr\/ciela\/tp_c-5-les-fonctions\/"]}]},{"@type":"WebSite","@id":"https:\/\/workboot.fr\/ciela\/#website","url":"https:\/\/workboot.fr\/ciela\/","name":"workboot","description":"Open Source, Open Minds ","publisher":{"@id":"https:\/\/workboot.fr\/ciela\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/workboot.fr\/ciela\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/workboot.fr\/ciela\/#organization","name":"workboot","url":"https:\/\/workboot.fr\/ciela\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/","url":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","contentUrl":"https:\/\/workboot.fr\/ciela\/wp-content\/uploads\/2025\/05\/logo_ciel-dorian-1.png","width":1024,"height":950,"caption":"workboot"},"image":{"@id":"https:\/\/workboot.fr\/ciela\/#\/schema\/logo\/image\/"}}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/workboot.fr\/ciela\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"Pr\u00e9requis: But: R\u00e9pertoire de travail: ~\/Works\/TP5_C\/ A la fin du TP on doit avoir Pr\u00e9sentation des fonctions en C \u00ab En C, la v\u00e9ritable puissance ne vient pas d&rsquo;\u00e9crire tout [&hellip;]","_links":{"self":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/comments?post=3601"}],"version-history":[{"count":79,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3601\/revisions"}],"predecessor-version":[{"id":6828,"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/pages\/3601\/revisions\/6828"}],"wp:attachment":[{"href":"https:\/\/workboot.fr\/ciela\/wp-json\/wp\/v2\/media?parent=3601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}