Was bedeutet #pragma once in C? [duplicate]

Lesezeit: 2 Minuten

Benutzeravatar von Wireshark
Wireshark

Mögliches Duplikat:

#pragma – helfen zu verstehen

Ich sah pragma oft, aber immer verwirrt, weiß jemand, was es tut? Ist es nur Windows?

In den Programmiersprachen C und C++ ist #pragma once eine nicht standardmäßige, aber weithin unterstützte Präprozessordirektive, die dazu bestimmt ist, dass die aktuelle Quelldatei nur einmal in einer einzigen Kompilierung enthalten ist. Somit dient #pragma einmal dem gleichen Zweck wie #include guards, aber mit mehreren Vorteilen, darunter: weniger Code, Vermeidung von Namenskollisionen und verbesserte Kompiliergeschwindigkeit.

Siehe die Wikipedia Artikel für weitere Details.

  • Was macht pragma meine? Ich kann mich nie daran erinnern …

    – Wireshark

    25. April 2011 um 9:19 Uhr

  • @wireshark Es ist ein griechisches Wort, “πράγμα” und es kommt von pragmatisch, wie hier gesagt …. Weil die genaue Bedeutung im Griechischen “Ding” ist, aber wenn Sie sich darauf konzentrieren, woher es kommt, können Sie sagen, dass es “Handlung” bedeutet “.

    – Gsamaras

    20. Juli 2016 um 18:41 Uhr

Es wird verwendet, um den folgenden Präprozessorcode zu ersetzen:

#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif

Eine gute Konvention besteht darin, beides hinzuzufügen, um ältere Compiler zu unterstützen (was jedoch selten vorkommt):

#pragma once
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif

Wenn also #pragma einmal fehlschlägt, funktioniert die alte Methode immer noch.

  • Wenn der Zweck nur darin besteht, Legacy-Präprozessoren zu unterstützen, brauchen wir das nicht #pragma once. Nur der #ifndef ... #define... #endif wird reichen für jeder Präprozessor (ja, Präprozessor, keine Compiler, weißt du 🙂

    – Sternchen

    20. Juli um 16:31 Uhr

Im Allgemeinen die #pragma Direktiven sind für die Implementierung von Compiler-spezifischen Präprozessoranweisungen vorgesehen. Sie sind nicht standardisiert, daher sollten Sie sich nicht zu sehr auf sie verlassen.

In diesem Fall, #pragma onceDer Zweck von ist es, die in Header-Dateien verwendeten Include-Wächter zu ersetzen, um eine mehrfache Aufnahme zu vermeiden. Es arbeitet auf den Compilern, die es unterstützen, etwas schneller, sodass es die Kompilierungszeit bei großen Projekten mit vielen Header-Dateien reduzieren kann #include‘ed häufig.

Pragma ist eine Anweisung an den Präprozessor. Es wird normalerweise verwendet, um eine zusätzliche Kontrolle während der Kompilierung bereitzustellen. Fügen Sie beispielsweise nicht denselben Header-Dateicode ein. Es gibt viele verschiedene Richtlinien. Die Antwort hängt davon ab, was auf das Pragma-Wort folgt.

1401310cookie-checkWas bedeutet #pragma once in C? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy