Heim > Backend-Entwicklung > C++ > Hauptteil

Wie ermittelt man die Typvollständigkeit in C ohne eine universelle Vorlage?

Patricia Arquette
Freigeben: 2024-10-30 17:15:03
Original
436 Leute haben es durchsucht

 How to Determine Type Completeness in C   without a Universal Template?

Bestimmen der Typvollständigkeit mit einer benutzerdefinierten Vorlage

Unvollständige Typen spielen, obwohl sie nicht vollständig definiert sind, eine entscheidende Rolle in der C-Programmierung. Es kann jedoch eine Herausforderung sein, festzustellen, ob ein Typ vollständig ist, insbesondere da es keine spezielle Vorlage wie is_complete von Boost gibt.

Vorgeschlagene Lösung

Obwohl eine universelle Lösung, die vollständig ist Die Einhaltung der One Definition Rule (ODR) mag schwer fassbar sein, ein plattformspezifischer Ansatz hat sich für Microsoft Visual C als effektiv erwiesen. Wie von Alexey Malistov beschrieben, kann die folgende Vorlage verwendet werden:

<code class="cpp">namespace
{
    template<class T, int discriminator>
    struct is_complete {  
      static T &amp; getT();   
      static char (&amp; pass(T))[2]; 
      static char pass(...);   
      static const bool value = sizeof(pass(getT()))==2;
    };
}</code>
Nach dem Login kopieren

Verwendung

Um diese Vorlage zu nutzen, verwenden Sie einfach das Makro IS_COMPLETE(X), wobei X ist der betreffende Typ. Zum Beispiel:

<code class="cpp">#define IS_COMPLETE(X) is_complete<X,__COUNTER__>::value</code>
Nach dem Login kopieren

Vorbehalt

Es ist wichtig zu beachten, dass das Makro __COUNTER__ nicht Teil des C-Standards ist. Daher ist diese Lösung möglicherweise nicht für alle Compiler geeignet.

Das obige ist der detaillierte Inhalt vonWie ermittelt man die Typvollständigkeit in C ohne eine universelle Vorlage?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!