8

#pragma mark Objective-c / xcode / ios の開発に精通しており、コードのセクションを見つけるのに役立ちます。

ただ、「マーク」以外にもキーワードがあるのではないかと思っています。同様に、 #pragma somethingelseを実行できますか? 前もって感謝します!

4

2 に答える 2

7

まず、いくつかの例:

  1. 診断を制御できます。

    http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas

  2. そして同じリンクから:

    • clang は、#pragma packレコード レイアウトを制御するための Microsoft " " 機能をサポートしています。GCC にもこの機能のサポートが含まれていますが、MSVC と GCC に互換性がない場合、clang は MSVC の定義に従います。

    • clang は#pragma comment(lib, "foo.lib")、指定されたライブラリに対して自動的にリンクする Microsoft の機能をサポートしています。現在、この機能は Visual C++ リンカーでのみ機能します。

    • clang は、#pragma comment(linker, "/flag:foo")COFF オブジェクト ファイルにリンカー フラグを追加する Microsoft の機能をサポートしています。ユーザーは、リンカーがフラグを理解できるようにする責任があります。

    ただし、そのリストの 2 番目と 3 番目は、iOS コードには適用されません。

  3. ウィキペディア [リンク] は、clang もサポートしていると述べてい#pragma onceます。

最後に、処理コードのclang API ドキュメントへのリンクを次に示します。pragmaそこから参照して、他のすべてを表示できます。特に、TokenKinds.def には、受け入れられたすべてのトークンが記述されているため、おそらく完全です。

#pragma unused
#pragma GCC visibility [push/pop]
#pragma pack [value/show/push/pop/etc/etc/etc]
#pragma clang __debug parser_crash
#pragma clang __debug captured
#pragma ms_struct [on/off]
#pragma align [native/natural/mac68k/power/reset]
#pragma weak [identifier]
#pragma weak [identifier = identifier] // alias
#pragma redefine_extname [identifier identifier]
#pragma STDC FP_CONTRACT
#pragma OPENCL EXTENSION
#pragma omp [...]
#pragma detect_mismatch
#pragma comment

にある解析コードはParsePragma.cpp、フロントエンドがそれらを受け入れたとしても、それらのすべてが実装されているわけではないことを示しているようです。

于 2013-06-13T14:47:55.837 に答える
0

はい。実装で定義されたディレクティブによく使用されますが、C で定義されているものもいくつかあります。

6.10.6 プラグマ ディレクティブ セマンティクス 1

  1. # pragma pp-tokensopt new-line前処理トークン STDC が (マクロ置換の前に) ディレクティブ内の pragma の直後に続かない形式の前処理ディレクティブは、実装が実装定義の方法で動作するようにします。この動作により、変換が失敗したり、トランスレータまたは結果のプログラムが準拠していない方法で動作したりする可能性があります。実装によって認識されないプラグマは無視されます。

  2. 前処理トークン STDC がディレクティブ内のプラグマの直後 (マクロ置換の前) に続く場合、ディレクティブでマクロ置換は実行されず、ディレクティブは次の形式のいずれかを持つ必要があります。その意味は別の場所で説明されています。

    #pragma STDC FP_CONTRACT on-off-switch

    #pragma STDC FENV_ACCESS on-off-switch

    #pragma STDC CX_LIMITED_RANGE on-off-switch

    `on-off-switch`: one of `ON OFF DEFAULT`
    

Carl Norum の回答は、実装定義のディレクティブの例をよくカバーしています。完全なリストについては、コンパイラのドキュメントを参照してください。

于 2013-06-13T16:53:14.073 に答える