+ +
- -
Systèmes d'Exploitation
Calendrier  Détails
Programmation
 
Calendrier  Détails
Processors
 
Calendrier  Détails
Communications
 
 
 
Calendrier  Détails
+ +
> >
- -

Dernières Nouvelles

Workshop gratuit Linux Embarqué avec System Workbench for Linux le 26 Mars 2020 à Rennes, avec ARROW

 
ac6 >> ac6-training >> Programmation >> Langages >> Embedded Modern C++ Programming Télécharger le catalogue Télécharger la page Ecrivez nous Version imprimable

L10 Embedded Modern C++ Programming

The Modern C++ Language for Embedded Systems

formateur
Objectives
  • Discover the modern C++ features
  • Learn the language changes in C++11, C++14 and C++17
  • Discover the new functionalities added to the standard library
  • Learn advanced modern C++ features
  • Moving to from traditional C++ to modern C++
  • Putting in evidence the essential modern C++ features used in embedded application
Equipment
  • Training manuals and software exercises
  • One PC for two trainees
  • One target board with ARM Cortex M4 microcontroller (STM32F)
  • Eclipse environment and GCC compiler
Prerequisite

First Day
C++ programming overview
  • History and definition
  • Overview on C++98/C++03/C++11/C++14/ C++17 and C++2x
  • Modern C++ objectives
  • Modern C++ for embedded systems
  • Object Oriented Programming in C++
    • Encapsulation
    • Classes and objects
    • Attributes and member functions
    • Object construction and destruction
    • Construction parameters
    • Copy constructor
    • Operator Overloading
  • Inheritance
    • Specialization by addition and substitution
    • Derivation and access rules
    • Construction during inheritance
    • Inheritance polymorphism
    • Virtual methods
    • Virtual inheritance
  • Generic objects and templates
  • Generic library: STL
Introduction to modern C++
  • Overview
  • Storage class specifiers
  • Uniform initialization
  • C++ Named Requirements
  • Automatic type deduction
    • The auto keyword
    • The auto keyword as a return type from a function
    • Using auto for declaring function signatures
    • Automatic constant references
    • Forwarding references
    • Advantages of using auto in embedded systems
Keywords
  • enum class
  • override and final
  • Inline variables
  • nullptr
  • static_assert
  • noexcept
  • constexpr and if constexpr
  • decltype
  • Defaulted and deleted functions
Second Day
New functionalities
  • Range-based for loops
  • Nested namespaces and namespace aliases
  • Structured binding
  • Move semantics and r-value references
    • Copy-constructing and Move-constructing
    • r-value references
    • Perfect forwarding
  • Alignment
    • Alignas
    • Alignof
Concurrency and Multithreading
  • Introduction
  • Thread
  • Implementing a thread-safe singleton
  • Atomic operations
    • Atomic features
    • Non-class functions
    • Atomic flag
    • Memory order
  • Mutex
    • Avoiding using recursive mutexes
  • Sending notifications between threads
  • Condition variables
  • Future and Promise
  • Task and Async
  • Modern C++ and RTOS
String Manipulation
  • New string Types
    • std::u16string
    • std::u32string
  • Basic string view
  • Converting between numeric and string types
  • Elementary string conversions
  • Input/output manipulators
    • std::get_money, std::put_money
    • std::get_time, std::put_time
    • std::quoted
  • Regular expressions
    • Format of a string
    • Parsing the content of a string
    • Replacing the content of a string
Third Day
Modern C++ Standard Library
  • Standard Library
    • std::optional
    • std::variant
    • std::any
    • std::byte
    • std::hash
    • Filesystem library
  • Literals
    • Cooked literals
    • Standard literal operators
    • Raw literals
    • Raw string literals
  • Random number generation
    • Random number generation engines
    • Random number generation distributors
  • Containers
    • std::array
    • std::forward_list
    • Unordered associative containers
Lambda functions
  • Syntax of lambdas
  • Defining lambdas
  • Using lambdas
    • Using lambdas with standard algorithms
    • Assigning lambdas to function pointers
    • Lambdas and std::function
    • Writing a function that accepts a lambda as parameter
  • Polymorphic lambdas
  • Recursive lambdas
Dynamic memory management
  • Smart Pointers
    • Raw Pointers
    • Automatic pointers
    • Unique Pointers
    • Shared Pointers
    • Weak Pointers