Description
This training will allow you to assimilate the new features introduced by the C11 ISO/IEC 9899:2011 standard. You will discover multithreading management, generic function selection as well as many other functions from the standard library offering safe operating interfaces.
Who is this training for ?
For whom ?
C developers wishing to know the new features defined by the C11 standard.
Prerequisites
Good knowledge of the C language. Practical programming experience with this language is strongly recommended.
Training objectives
Training program
- The advent of C11
- The different C standards ANSI, C99, C11.
- New features of C11 and objectives of this ISO standard.
- Compatibility with old versions.
- Development tools (compilers, IDE).
- Practical work Setting up a C11 compilation chain.
- Reminders on C99 progress
- Arrays of variable size.
- Inline functions.
- The new data types long, _Complex, _Bool.
- Pointers "restricted" (restrict).
- Mixing instructions and variable declarations.
- The problem of non-compliance of compilers.
- Reworks /abandonment of C99.
- Practical work rnCompile in C99 and C11 and know which version you are in.
- Le multithreading
- The concept of thread.
- Lightweight versus heavyweight process.
- Thread life cycle (execution).
- Sharing data between threads.
- Synchronization, appointments, semaphores.
- Proposals for other languages: Java, C#, C++.
- Use C11 threads
- Understand the concepts present in the standard and the differences/similarities with Pthreads.
- Create a thread, make it executable.
- Define pauses, wait for the end of execution.
- Use mutexes.
- Implement a producer-consumer.
- Practical work Use C11 threads.
- Atomic objects
- Understand the issues of data sharing between threads and the concept of atomic objects.
- Define atomic data.
- Use atomic operations.
- Non-atomic data management.
- Practical work Carry out data sharing between threads.
- Operational safety
- The removal of gets() by gets_s().
- The fopen_s() function.
- Other functions: strcat_s(), strcpy_s().
- Practical work Manipulation of functions.
- Miscellaneous improvements
- Structure alignment (
). - - Unicode string management (char16_t...).
- - Support for anonymous structures and unions.
- - Generic selection of functions within macros (_Generic) - Handling of complex numbers.
- - The new mode of fopen().
- - Static assertions.
- Practical work
- Implementation of improvements.