Formation C11, mise à niveau pour développeur C
- Programme
- Participants / Prérequis
- Intra / sur-mesure
Cette formation vous permettra d'assimiler les nouveautés introduites par le standard C11 ISO/IEC 9899:2011. Vous découvrirez la gestion du multithreading, la sélection générique de fonctions ainsi que de nombreuses autres fonctions de la bibliothèque standard offrant des interfaces de fonctionnement sûres.
Objectifs pédagogiques
- Appréhender les nouveautés de C11
- Développer des applications exploitant les threads standards C11
- Améliorer la fiabilité d'une application à l'aide des nouvelles fonctions standards C11
Travaux pratiques
L'avènement de C11
- Les différentes normes C ANSI, C99, C11.
- Nouveautés de C11 et objectifs de cette norme ISO.
- Compatibilité avec les anciennes versions.
- Outils de développement (compilateurs, IDE...).
Travaux pratiques
Mise en place d'une chaîne de compilation C11.
Rappels sur les avancées de C99
- Les tableaux de taille variable.
- Les fonctions inline.
- Les nouveaux types de données long, _Complex, _Bool.
- Les pointeurs "restreints" (restrict).
- Mélanger instructions et déclarations de variables.
- Le problème de la non-conformité des compilateurs.
- Les reprises/abandons de C99.
Travaux pratiques
Compiler en C99 et en C11 et savoir dans quelle version on se trouve.
Le multithreading
- Le concept de thread. Processus léger versus lourd.
- Cycle de vie des threads (exécution...).
- Partage de données entre threads.
- Synchronisation, rendez-vous, sémaphores.
- Les propositions des autres langages : Java, C#, C++.
Utiliser les threads de C11
- Appréhender les concepts présents dans la norme et les différences/similitudes avec Pthreads.
- Créer un thread, le rendre exécutable.
- Définir des pauses, attendre la fin d'exécution.
- Utiliser les mutex.
- Implémenter un producteur-consommateur.
Travaux pratiques
Utiliser les threads C11.
Les objets atomiques
- Comprendre les problématiques de partage de données entre threads et le concept d'objet atomique.
- Définir une donnée atomique.
- Utiliser les opérations atomiques.
- La gestion des données non-atomiques.
Travaux pratiques
Réaliser un partage de données entre threads.
La sûreté de fonctionnement
- La suppression de gets() par gets_s().
- La fonction fopen_s().
- Autres fonctions : strcat_s(), strcpy_s()...
Travaux pratiques
Manipulation de fonctions.
Améliorations diverses
- L'alignement des structures (<stdalign.h>).
- La gestion des chaînes Unicode (char16_t...).
- Le support des structures et unions anonymes.
- La sélection générique de fonctions au sein des macros (_Generic).
- Manipulation des nombres complexes.
- Le nouveau mode de fopen().
- Les assertions statiques.
Travaux pratiques
Mise en œuvre des améliorations.









