ホームページ  >  記事  >  php教程  >  externの使い方まとめ

externの使い方まとめ

高洛峰
高洛峰オリジナル
2016-12-19 14:33:361202ブラウズ

extern

ソース ファイル A で定義された関数は、他のソース ファイルでは見えません (つまり、アクセスできません)。ソース ファイル B でこの関数を呼び出すには、B の先頭に外部宣言を追加する必要があります。


extern functionprototype;


このようにして、その関数はソース ファイル B でも呼び出すことができます。
ここでの表現の違いに注意してください。A では定義、B ではステートメントです。関数は 1 つのソース ファイルでのみ定義できます (また、定義する必要があります)。ただし、他の複数のソース ファイルで宣言することはできます。定義するとストレージ割り当てが発生し、実際にそのエンティティが作成されます。この宣言によってストレージの割り当てが行われることはありません。大雑把に例えると、ソース ファイル B で宣言した後、B でウィンドウを開いて A の関数を確認できるようにするようなものです。

#i nclude "stdafx.h"


1.extern は変数宣言でよく使用されます。このグローバル変数を *.c ファイルで宣言する場合は、それを配置します。 *.h を作成し、extern で宣言します。
2. 関数宣言にキーワード extern が含まれている場合、それはその関数が他のソース ファイルで定義できることを意味するだけであり、他の効果はありません。つまり、次の 2 つの関数宣言には違いはありません:
extern int f() と int f(); ====================== === ======
関数を定義する c/cpp ファイルが、対応するヘッダー ファイルで定義された関数を宣言している場合、これらの関数を他の c/cpp ファイルで使用するには、このヘッダー ファイルをインクルードするだけで済みます。 。
ヘッダファイルをインクルードしたくない場合は、c/cppで関数を宣言します。一般に、このファイルで定義された関数を宣言する場合は「extern」を使用せず、他のファイルで定義された関数を宣言する場合は「extern」を使用します。このように、他のファイルで定義された関数をこのファイルで呼び出す場合は、その必要はありません。ヘッダーファイルをインクルードするには
関数を宣言するには「* .h」をインクルードすると、宣言直後に使用できます。
================================================ ================================================ =================================== //extern.cppの内容は以下の通りです

/ / extern.cpp: コンソール アプリケーションのエントリ ポイントを定義します。
//

#i nclude "stdafx.h"
extern print(char *p);
int main(int argc, char* argv[])
{
char *p="hello world!";
print(p);
return 0;
}
//print.cppの内容は以下の通り
#i nclude "stdafx.h"
#i nclude "stdio. h"
print(char *s)
{
printf("The string is %s/n",s);
}

結果プログラムは正常に実行でき、結果を出力できます。 「extern」を削除しても、プログラムは通常どおり実行できます。

関数宣言では「extern」は不要であることがわかりますが、これは関数がこのファイルで定義されているか、別のファイルで定義されているかを示すためにのみ使用されます。関数が使用前に宣言されている限り、ヘッダー ファイルをインクルードする必要はありません。

VC++6.0では「プリコンパイルされたヘッダーディレクティブを探しているときに予期しないファイルの終わりが発生する」問題が頻繁に発生しますか?

解決方法: 「致命的エラー C1010: VC++6.0 でよく発生する「プリコンパイルされたヘッダー ディレクティブを探しているときに予期しないファイルの終わり」の問題?

VC6.0 では誰もがこの問題によく遭遇すると思います。解決方法

1. ";"、"}" が抜けていないか確認してください

クラスや構造体の後のセミコロンなど

深く隠れている問題はマクロと .h ファイルなので、それらについて心配する必要があります


2. クラス内の定義の一部は削除されている必要があります。M$ は、次のように、ペアになっている各クラスのいくつかの特殊な定数を定義します。 4CA89DD_BA94_11D4_94D7_0010B503C2EA__含まれます_
。 ......

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ は、前の行の直前に追加の宣言を挿入します。

#endif // !define(AFX_MAINFRM _H__54CA89DB_BA94_11D4_94D7_0010B503C2EA__INCLUDED_)


新しいものを作成できますクラスを作成し、これらをコピーまたは追加します
3. #i nclude "stdafx.h" をヘッダーに追加します

4. #i nclude "stdafx.h" を CPP ファイルの最初の行に追加します

または。すべて再構築します

5. [プロジェクト] - [設定] - [C/C++] - [カテゴリ]
(2) [プリコンパイル済みヘッダー] を選択します (3)。プリコンパイル済みヘッダー]
(4) [OK]


上記で問題が解決しない場合は、次の内容を読んでください。このようなエラーが発生する場合は、.H および .CPP ファイルを追加しただけである可能性があります。この場合は、上記のようにする必要があります。
名前には「stdafx .h」が含まれています。複数のファイルで構造型を同時に使用したい場合は、必ず読み続ける必要があります。

型の定義は の定義とは異なります。型変数。
型 定義は型を記述するだけです。
はコンパイラーが確認するためのものであり、
は実行可能コードを生成しません。
変数定義は、実行可能ファイル内のそのようなコンテンツの実際の存在を指します。

それぞれの.cに型定義を明確に書くのは面倒なので、一般的には.hで型定義を書き
、.cでは struct A a; というような簡単な書き方が使われます

型の説明全体を再度記述する必要はありません。

------------------------------------------------ ------------------------

したがって、構造体の型定義を XX.h に配置し、
XX.cpp を struct str で追加しますst_r;
XXXXX.cpp #i nclude "XX.h" を追加します
その後、 extern struct str st_r を直接使用します;



extern の使用方法の概要に関連するその他の記事については、PHP 中国語に注意してください。 Webサイト!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。