2

エラー C2129: 静的関数 'void func(int,char *)' が宣言されていますが、定義されていません

私はそれを読んだ:

静的関数は、ファイル スコープ内で定義する必要があります。関数が別のファイルで定義されている場合は、extern として宣言する必要があります。

ファイル スコープとは、C++ または .h のいずれかで定義する必要があること、または宣言されている .h ファイル内で定義する必要があることを意味しますか?

4

2 に答える 2

6

C++ コンパイラは .h ファイルを認識しません。ファイルの内容は、プリプロセッサ自体によって cpp ファイルに配置されます。ここで、ファイル スコープは、関数が cpp ファイルにある必要があるということです。

于 2012-04-26T12:43:46.750 に答える
2

関数が別のファイルで定義されている場合は、extern として宣言する必要があります。

このステートメントでは、「別のファイル」は、コンパイル後に最終的にリンクされる「別のオブジェクト ファイル」に変換されます。Naveenが答えたように、コンパイラは関数がどのソースファイルで宣言されているかをあまり気にしません.

于 2012-04-26T12:48:34.047 に答える