LLVMコンパイラを使用するObjetive-Cでstatic
、extern
および(およびそれらの組み合わせ)はどういう意味ですか?inline
CG_EXTERN
また、CG_INLINE
マクロがあることに気づきました。代わりにそれらを使用する必要がありますか?
(明確な説明のある情報源が見つからなかったので、ここで作成するか、誰かが知っている場合はそれを指すと便利だと思いました)
LLVMコンパイラを使用するObjetive-Cでstatic
、extern
および(およびそれらの組み合わせ)はどういう意味ですか?inline
CG_EXTERN
また、CG_INLINE
マクロがあることに気づきました。代わりにそれらを使用する必要がありますか?
(明確な説明のある情報源が見つからなかったので、ここで作成するか、誰かが知っている場合はそれを指すと便利だと思いました)
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_EXTERN
とCG_INLINE
特定の意味(変更される可能性があります)を持ち、定義されたコンテキストで使用されることを意図しています-また、いくつかのフレームワーク(すべてのCoreGraphics / ApplicationServices / CoreFoundationなど)を含める必要はありません。extern
CおよびC++で機能する方法で何かを指定したい。
ジャスティンはそのほとんどをカバーしましたが、もっと深く掘り下げたい人のために他の素晴らしいリソースを見つけました:
関数をインラインで宣言することにより、その関数の完全なコードを、呼び出された場所に直接置き換えるようにコンパイラーに指示します。これはかなり高度な機能であり、低レベルのプログラミングを理解する必要があります。
このSOの質問には、外部変数(「どこか別の場所」で定義された変数)についての膨大な答えがありますが、「ここ」でも使用する必要があります。
静的は、スコープ外の可変寿命を保持します。変数は、宣言されたスコープ内に表示されます。