我有一个示例代码,如下所示:
class myclass
{
public:
static int j;
myclass(){};
~myclass(){};
};
int main(int argc, char** argv) {
myclass obj;
return EXIT_SUCCESS;
}
现在我在myclass中声明了一个静态int,虽然我没有定义它,但在我开始使用静态变量之前,编译器并没有给我任何错误。这是为什么?
答案 0 :(得分:2)
因为这些是链接器错误,而不是编译器错误。在使用未定义的符号之前,链接器错误永远不会出现。
答案 1 :(得分:2)
"在我开始使用静态变量之前,编译器没有给我任何错误。为什么?"
因为在此之前(当您开始使用它时)它不需要与您的代码链接。链接器忽略/剥离未使用的代码。