C est toujours le langage de programmation préféré des développeurs de systèmes embarqués, cependant, il y en a suffisamment qui utilisent C ++ dans leur pratique.
En utilisant les capacités C ++ appropriées, vous pouvez écrire du code dont l'efficacité ne sera pas inférieure à celle d'une application similaire écrite en C, et dans certains cas, il sera encore plus efficace, car il peut être assez fastidieux pour un programmeur ordinaire d'implémenter certaines fonctionnalités en C, ce qui est beaucoup plus facile à implémenter avec des fonctionnalités C ++ supplémentaires.
C ++ 20 est la septième itération de C ++, précédée, par exemple, de C ++ 17, C ++ 14 et C ++ 11. Chaque itération a ajouté de nouvelles fonctionnalités tout en affectant également quelques fonctionnalités précédemment ajoutées. Par exemple, le mot clé auto en C ++ 14.
Environ. trad.:
C ++ 14 a introduit de nouvelles règles pour le mot clé auto . Auparavant, les expressions
auto a{1, 2, 3}, b{1};
étaient autorisées et les deux variables étaient de typeinitializer_list<int>
. En C ++ 14auto a{1, 2, 3};
entraîne une erreur de compilation et seauto b{1};
compile avec succès, mais le type de variable seraint
et noninitializer_list<int>
. Ces règles ne s'appliquent pas aux expressionsauto a = {1, 2, 3}, b = {1};
dans lesquelles les variables sont encore de typeinitializer_list<int>
.
C ++ 11 a subi des modifications importantes et est la version la plus courante de la norme utilisée dans les systèmes embarqués, car les développeurs de systèmes embarqués n'utilisent pas toujours la boîte à outils la plus à jour. Des solutions éprouvées et fiables sont essentielles lors du développement d'une plate-forme qui peut durer des décennies.
, ++20 . . , « ». , , , x < 20
, x.operator<=>(20) < 0
. , , <, <=, >= >, , . x == y
operator<=>(x, y) == 0
.
. .:
« » @Viistomin « spaceship ( ) C++20»
++20 , :
- , . ++11 constexpr , . ++20 , . , try/catch. .
consteval constexpr , , , , #define, ++.
. , . (. .: ) .
. .:
, @PkXwmpgN «C++20. Coroutines» , stackoverflow.
++20 coroutine_traits coroutine_handle. «». , .
++17, . , . Ada SPARK, , C++20 .
, . , . – (. .: ), . . , cppreference.com, :
#include <string>
#include <cstddef>
#include <concepts>
using namespace std::literals;
// "Hashable",
// 'T' , 'a' 'T',
// std::hash{}(a) std::size_t
template <typename T>
concept Hashable = requires(T a) {
{ std::hash{}(a) } -> std::convertible_to<std::size_t>;
};
struct meow {};
template <Hashable T>
void f(T); // ++20
// :
// template<typename T>
// requires Hashable<T>
// void f(T);
//
// template <typename T>
// void f(T) requires Hashable<T>;
int main() {
f("abc"s); // OK, std::string Hashable
f(meow{}); // : meow Hashable
}
++20, , , , .
#include . import export , - #include.
#include . , . , . , . , , , ++.
, , Java Ada . , , . . , , #include.
, #include . .
- Ada SPARK, C++20 C++ . C++20, , . , . , .
, C++20, , , ++20.