この記事では、C/Cにおけるexternキーワードの使い方を、主に変数を変更する際の使い方について紹介しますので、参考にしてください。 、お役に立てば幸いです。
1. 基本的な説明
extern は、変数または関数の前に配置して、変数または関数の定義が別のファイルにあることを示し、コンパイラーにこの変数を検出するように指示することができます。または関数 他のモジュールでその定義を探す場合。さらに、extern を使用して仕様をリンクすることもできます。
extern には 2 つの関数があります: (1) extern "C" void func(int a); のように、「C」と一緒に使用される場合、func 関数をコンパイルするときに C の規則に従うようにコンパイラーに指示します。 name. C の代わりに対応する関数名を翻訳します。この点については、書籍「C オブジェクト モデルの詳細な探索」で答えが見つかるかもしれません。さらに、Linux には、スタック情報を出力し、C に翻訳された関数名を表示できるバックトレース関数があります (この関数は Muduo ライブラリで使用されます)。
(2) ヘッダー ファイルなどで変数または関数を変更するために extern が "C" と一緒に使用されない場合: extern int g_Int; その機能は関数またはグローバル変数キーワードのスコープを宣言することです。宣言された関数と変数はこのモジュールまたは他のモジュールで使用できます。これは定義ではなく宣言であることに注意してください。
2. extern が変数を変更する場合
これを使用する正しい方法は、.c ファイルで変数を定義し、対応する .h ファイルでそれを宣言することです。
宣言か定義かは、変数にメモリ空間が確保されるかどうかで判断します(厳密にはメモリを確保するだけで初期化部分は含まれません)。それでは、文 int i; はそれを宣言するのでしょうか、それとも定義するのでしょうか?それはステートメントでもあり、定義でもあります。 test.h ファイルでこの文を使用すると、一度 i が他のファイルで定義されたり (例: 1)、ファイルが繰り返しインクルードされると (例: 2)、再定義エラーが発生します。
/* e.g.1 以下为3个文件 */ //test.h int i; //test2.h int i; //main.cpp #include "test.h" #include "test2.h" int main() { return 0; }
/* e.g.2 以下为3个文件 */ //test.h int i; //test2.h #include "test.h" //main.cpp #include "test.h" #include "test2.h" int main() { return 0; }
関連チュートリアル: C ビデオ チュートリアル
以上がC/C++ で extern キーワードを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。