#pragma objective-c: Können Sie mehr als nur "markieren"?

8

Ich bin vertraut mit #pragma mark objective-c / xcode / ios-Entwicklung und dass es nützlich ist, um Codeabschnitte zu finden.

Ich frage mich jedoch, ob es andere Keywords als "mark" gibt. Wie können Sie #pragma somethingselse tun? Vielen Dank im Voraus!

    
Nathan Fraenkel 13.06.2013, 14:39
quelle

2 Antworten

7

Zuerst einige Beispiele:

  1. Sie können die Diagnose steuern:

    Ссылка

  2. Und von demselben Link:

      
    • clang unterstützt die Microsoft-Funktion " #pragma pack " zur Steuerung des Datensatzlayouts. GCC bietet auch Unterstützung für diese Funktion. Wenn jedoch MSVC und GCC inkompatibel sind, folgt clang der MSVC-Definition.

    •   
    • clang unterstützt das Feature Microsoft #pragma comment(lib, "foo.lib") für die automatische Verknüpfung mit der angegebenen Bibliothek. Derzeit funktioniert diese Funktion nur mit dem Visual C ++ - Linker.

    •   
    • clang unterstützt das Microsoft #pragma comment(linker, "/flag:foo") -Feature zum Hinzufügen von Linker-Flags zu COFF-Objektdateien. Der Benutzer ist dafür verantwortlich sicherzustellen, dass der Linker die Flags versteht.

    •   

    Die zweite und dritte Liste wird jedoch nicht auf Ihren iOS-Code angewendet.

  3. Wikipedia [ link ] sagt, dass clang auch #pragma once unterstützt.

Und schließlich, hier ist ein Link zu der CLANG-API-Dokumentation für den pragma -Behandlungscode. Sie können von dort aus suchen, um alles andere zu sehen. TokenKinds.def beschreibt insbesondere alle akzeptierten Token, also ist es vermutlich komplett:

%Vor%

Der Parsing-Code, der in ParsePragma.cpp gefunden wurde, scheint darauf hinzudeuten, dass nicht alle davon implementiert sind. auch wenn das Front-End sie akzeptiert.

    
Carl Norum 13.06.2013, 14:47
quelle
0

Ja. Es wird oft für implementierte definierte Direktiven verwendet, aber es gibt einige, die in C definiert sind.

  

6.10.6 Pragma-Direktive Semantik 1

     
  1. Eine Preprocessing-Direktive der Form # pragma pp-tokensopt new-line , bei der das Vorverarbeitungstoken STDC nicht sofort ausgeführt wird   folgen Sie Pragma in der Direktive (vor jedem Makroersatz)   bewirkt, dass sich die Implementierung in einer Implementierung definiert   Weise. Das Verhalten kann dazu führen, dass die Übersetzung fehlschlägt oder den Fehler verursacht   Übersetzer oder das resultierende Programm, um sich nicht konform zu verhalten   Weise. Irgendein solches Pragma, das von der Implementierung nicht erkannt wird   wird ignoriert.

  2.   
  3. Wenn das Vorverarbeitungstoken STDC dem Pragma in der Direktive (vor jedem Makroersatz) unmittelbar folgt, dann kein Makro   die Richtlinie wird ersetzt   haben eine der folgenden Formen, deren Bedeutungen beschrieben werden   anderswo:

         

    #pragma STDC FP_CONTRACT on-off-switch

         

    #pragma STDC FENV_ACCESS on-off-switch

         

    #pragma STDC CX_LIMITED_RANGE on-off-switch

    %Vor%
  4.   

Carl Norums Antwort umfasste Beispiele für die Umsetzung definierter Richtlinien. Eine vollständige Liste finden Sie in der Dokumentation Ihres Compilers.

    
justin 13.06.2013 16:53
quelle

Tags und Links