Faszinierende C ++ 20-Funktionen für eingebettete Entwickler

C ist immer noch die bevorzugte Programmiersprache unter Entwicklern eingebetteter Systeme. Es gibt jedoch genug von ihnen, die C ++ in ihrer Praxis verwenden.





Mit den entsprechenden C ++ - Funktionen können Sie Code schreiben, der in seiner Effizienz dem Code einer ähnlichen in C geschriebenen Anwendung nicht unterlegen ist, und in einigen Fällen sogar noch effizienter, da es für einen normalen Programmierer ziemlich mühsam sein kann, einige Funktionen in C zu implementieren, was sehr viel ist einfacher zu implementieren mit zusätzlichen C ++ - Funktionen.





C ++ 20 ist die siebte Iteration von C ++, der beispielsweise C ++ 17, C ++ 14 und C ++ 11 vorausgehen . Jede Iteration fügte neue Funktionen hinzu und wirkte sich auch auf einige zuvor hinzugefügte Funktionen aus. Zum Beispiel das Schlüsselwort auto in C ++ 14.





Ca. übersetzt .:





In C ++ 14 wurden neue Regeln für das Schlüsselwort auto eingeführt . Zuvor waren Ausdrücke auto a{1, 2, 3}, b{1};



zulässig und beide Variablen waren vom Typ initializer_list<int>



. In C ++ 14 auto a{1, 2, 3};



führt dies zu einem Kompilierungsfehler und wird auto b{1};



erfolgreich kompiliert, der Typ der Variablen ist jedoch int



und nicht initializer_list<int>



. Diese Regeln gelten nicht für Ausdrücke, auto a = {1, 2, 3}, b = {1};



in denen die Variablen noch vom Typ sind initializer_list<int>



.









C ++ 11 wurde erheblich geändert und ist die am häufigsten verwendete Version des in eingebetteten Systemen verwendeten Standards, da Entwickler eingebetteter Systeme nicht immer das aktuellste Toolkit verwenden. Bewährte und zuverlässige Lösungen sind entscheidend für die Entwicklung einer Plattform, die Jahrzehnte dauern kann.





, ++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.








All Articles