Heim > Backend-Entwicklung > C++ > Was ist der Hauptunterschied zwischen „typedef' und „using' für Typaliase in C?

Was ist der Hauptunterschied zwischen „typedef' und „using' für Typaliase in C?

Barbara Streisand
Freigeben: 2024-12-25 20:27:09
Original
549 Leute haben es durchsucht

What's the Key Difference Between `typedef` and `using` for Type Aliases in C  ?

Die Nuancen von „typedef“ und „using“ in C verstehen

Die Schlüsselwörter „typedef“ und „using“ in C erleichtern beide die Erstellung von Typaliasen. Obwohl sie ähnlichen Zwecken dienen, bestehen geringfügige Unterschiede in ihrer Implementierung.

Ab C 11 entwickelte sich die „using“-Syntax als prägnante Möglichkeit, Typaliase zu definieren. Zum Beispiel:

using MyInt = int;
Nach dem Login kopieren

Dies ist semantisch äquivalent zum traditionellen „typedef“:

typedef int MyInt;
Nach dem Login kopieren

Allerdings gewann die „using“-Syntax aufgrund ihrer Fähigkeit, „Vorlagentypdefinitionen“ auszudrücken, an Bedeutung „:

template<class T> using MyType = AnotherType<T, MyAllocatorType>;
Nach dem Login kopieren

Lassen Sie uns nun mögliche Unterschiede zwischen „typedef“ und „using“ untersuchen. bezüglich der Alias-Stärke. „typedef“ ist für sein „schwaches“ Aliasing-Verhalten bekannt, was bedeutet, dass es keinen neuen Typ erstellt, sondern lediglich einen neuen Namen festlegt. Konvertierungen zwischen Alias-Typen und ihren ursprünglichen Typen sind implizit.

Es stellt sich die Frage: Verhält sich „using“ ähnlich oder führt es zur Erstellung eines neuen Typs? Die Antwort laut C-Standard (7.1.3.2) ist, dass sie semantisch gleichwertig sind:

"It [using] has the same semantics as if it were introduced by the typedef specifier. In particular, it does not define a new type and it shall not appear in the type-id."
Nach dem Login kopieren

Daher erzeugen sowohl „typedef“ als auch „using“ schwache Aliase, ohne neue Typen zu generieren, was zur Folge hat bei impliziten Konvertierungen zwischen Alias- und Originaltypen.

Das obige ist der detaillierte Inhalt vonWas ist der Hauptunterschied zwischen „typedef' und „using' für Typaliase in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage