同一のプロジェクトで、異なるソースコードから関数を呼び出す (その1)
別のソースコードで定義された関数を main から呼び出す状況を作ります。
手順
[ソリューション エクスプローラー] の [ソース ファイル] を右クリックします
その後 [追加] > [新しい項目] をクリックします
【備考】
[ソリューション エクスプローラー] は右クリックする項目が重要です。
ここで例えば [ヘッダー ファイル] を右クリックしてしまうと、この後追加するソースファイルが [ヘッダーファイル] 項目の配下で管理されてしまいます。
ダイアログ左側 [Visual C++] を押下、その後 [C++ ファイル (.cpp)] を押下します
[名前] には "MySource.cpp" と入力します
[追加] を押下します
[ソース ファイル] 配下に "MySource.cpp" が追加されたことと、開かれた状態になったことを確認します
"MySource.cpp" に下記を追加します
int mySourceFunc()
{
return 444;
}
[ソリューション エクスプローラー] より "ConsoleApplication1.cpp" をダブルクリックして開きます
main 関数に下記行を追加します
int main()
{
printf("Hello World!\n");
printf("myFunc: %d\n", myFunc());
printf("mySourceFunc: %d\n", mySourceFunc());
}
[ローカル Windows デバッガー] より実行を試みます
・・・エラーダイアログとそのログが表示されます
ビルドを開始しました...
1>------ ビルド開始: プロジェクト: ConsoleApplication1, 構成: Debug Win32 ------
1>ConsoleApplication1.cpp
1>D:\User\Desktop\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.cpp(9,34): error C3861: 'mySourceFunc': 識別子が見つかりませんでした
1>プロジェクト "ConsoleApplication1.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
宣言を追加しないと駄目だったのでした
次の行を追加します
#include
int myFunc();
int mySourceFunc();
int main()
{
printf("Hello World!\n");
printf("myFunc: %d\n", myFunc());
printf("mySourceFunc: %d\n", mySourceFunc());
}
再度 [ローカル Windows デバッガー] より実行します
無事 mySourceFunc() 関数を呼び出すことができました
別のソースファイルから関数を呼び出す場合も、呼び出し元で宣言すればその行以降で呼び出しが可能になる、ということになります。