2015-08-29 66 views
0

我已經編寫了程序來測試staticextern關鍵字在C++中。static和extern關鍵字LINK錯誤C++

source1.cpp

#include "Header.h" 
using namespace std; 

static int num; 

int main(){ 
    num = 1; 
    cout << num << endl; 
    func(); 
} 

source2.cpp

#include "Header.h" 

using namespace std; 
extern int num; 

void func(){ 
    num = 100; 
    cout << num << endl; 
} 

Header.h

#ifndef HEADER_H 
#define HEADER_H 

#include <iostream> 

void func(); 

#endif 

當我編譯這個程序我t給我一個鏈接錯誤。

error LNK2001, LNk1120 unresolved externals. 

是什麼原因導致此鏈接錯誤?

回答

2

此鏈接錯誤原因是因爲num變量聲明爲靜態變量。

即使變量NUM被聲明爲source2.cpp文件的EXTERN,鏈接器將無法找到它,因爲它已經宣佈source1.cpp 靜態

當你聲明變量static時,它是本地的文件;它有文件範圍。該變量在該文件之外不可用。