2013-06-13 6 views
8

#pragma mark objective-c/xcode/ios developmentに精通しており、コードのセクションを見つけるのに便利です。#pragma objective-c:「マーク」以上のものはありますか?

しかし、「マーク」以外のキーワードがあるかどうかは疑問です。同様に、あなたはできますか#pragma somethingelse?前もって感謝します!

+0

誰かがここに来て、実際に働いていた500個の文書化されていないキーワードを投稿した場合、面白いでしょうか? – doge

+0

あなたは '' FIXME:あなたが望むテキストをいくつか ''/TODO:プラグマ一度 ' – Popeye

+0

はい、 '#pragma clang diagnostic ...'のように他にもあります。 – Wain

答えて

7

まず、いくつかの例:

  1. あなたがコントロールすることができ、診断:

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

  2. と同じリンクから:

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

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

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

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

  3. ウィキペディア[link]はclangが#pragma onceをサポートしていると言います。

そして最後に、ここでpragma処理コードのためのclang API documentationへのリンクがあります。そこから他のすべてを見ることができます。特に、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で見つかった解析コードは、それらのすべてが実装されていないことを示していると思われる、フロントエンドが受け入れる場合でも、しかし、それら。

0

はい。それは、多くの場合、実装定義されたディレクティブのために使用されるが、C.

6.10.6プラグマディレクティブの意味1

  1. フォーム# pragma pp-tokensopt new-lineの前処理指令の前処理トークンで定義されているいくつかがありますSTC does notすぐに ディレクティブ(マクロ置換の前に)のプラグマに従う 実装が実装定義された の方法で振る舞うようにする。動作によって変換が失敗するか、 トランスレータまたは結果のプログラムが非適合の方法で動作する可能性があります( )。実装によって認識されないプラグマは無視されます。

  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` 
    

カールNorumの答えはうまく実装定義されたディレクティブの例をカバーしました。完全なリストについては、コンパイラーの資料を参照してください。

関連する問題