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 回答