30

LLVMコンパイラを使用するObjetive-Cでstaticexternおよび(およびそれらの組み合わせ)はどういう意味ですか?inline

CG_EXTERNまた、CG_INLINEマクロがあることに気づきました。代わりにそれらを使用する必要がありますか?

(明確な説明のある情報源が見つからなかったので、ここで作成するか、誰かが知っている場合はそれを指すと便利だと思いました)

4

2 に答える 2

34

LLVMコンパイラを使用するObjetive-Cで、静的、外部、インライン(およびそれらの組み合わせ)はどういう意味ですか?

ObjC ++としてコンパイルしない限り、Cの場合と同じです。つまり、C++の場合と同じ意味になります。

ここにCの紹介がありますが、詳細が重要であるため、これらを使用する準備ができている場合はリンクを読んでください。


Extern

概要:識別子が他の場所で定義されていることを示します。

詳細:http ://tigcc.ticalc.org/doc/keywords.html#extern

静的

要約(値):スコープが終了した後も存続するように変数値を保持します。

要約(関数):名前のないコピーを効果的に出力します-Cのプライベート関数に役立ち、インライン関数で使用すると複数の定義エラーを回避するために使用できます。

詳細:http ://tigcc.ticalc.org/doc/keywords.html#static

列をなして

概要:関数の本体を呼び出し元に移動する必要があることを示します。

詳細:http ://tigcc.ticalc.org/doc/gnuexts.html#SEC93


インラインと静的は、C ++ではかなり複雑であることに注意してください(C ++のほとんどすべてのように)。

また、CG_EXTERNマクロとCG_INLINEマクロがあることもわかりました。代わりにそれらを使用する必要がありますか?

いいえ。

代わりに、このタイプの機能が必要な場合は、独自の意味で独自の機能を指定する必要があります。CG_EXTERNCG_INLINE特定の意味(変更される可能性があります)を持ち、定義されたコンテキストで使用されることを意図しています-また、いくつかのフレームワーク(すべてのCoreGraphics / ApplicationServices / CoreFoundationなど)を含める必要はありません。externCおよびC++で機能する方法で何かを指定したい。

于 2012-08-16T10:37:42.917 に答える
5

ジャスティンはそのほとんどをカバーしましたが、もっと深く掘り下げたい人のために他の素晴らしいリソースを見つけました:

関数をインラインで宣言することにより、その関数の完全なコードを、呼び出された場所に直接置き換えるようにコンパイラーに指示します。これはかなり高度な機能であり、低レベルのプログラミングを理解する必要があります。

インライン関数


このSOの質問には、外部変数(「どこか別の場所」で定義された変数)についての膨大な答えがありますが、「ここ」でも使用する必要があります。


静的は、スコープ外の可変寿命を保持します。変数は、宣言されたスコープ内に表示されます。

静的変数とはどういう意味ですか?


于 2012-08-16T11:24:44.687 に答える