我的代碼是在這裏:EXTERN在C++(VS2012)多個定義的符號發現
Header.h文件:
#ifndef HEADER_H_
#define HEADER_H_
extern int k;
#endif /* HEADER_H_ */
Source1.h文件:
#include <iostream>
#include "Header.h"
using namespace std;
#ifndef SOURCE1_H_
#define SOURCE1_H_
int k = 10;
void punch(){
cout << k << endl;
}
#endif /*SOURCE1_H_*/
Source.cpp文件:
#include "Source1.h"
using namespace std;
int main()
{
punch();
cin.get();
return 0;
};
我在Visual Studio 2012上編譯在Windows 7中的快遞版。錯誤代碼是:
1>c:\users\freeman\documents\visual studio 2012\Projects\exploringexterns\Debug\exploringexterns.exe : fatal error LNK1169: one or more multiply defined symbols found
我在做什麼錯?
鏈接器說什麼符號被多次定義?另外,請不要在標題中使用'namespace std'。搜索爲什麼這是一件壞事。 – Praetorian 2013-02-13 15:51:08
似乎是int k – 2013-02-13 15:57:36
@Praetorian沒有命名空間std會導致錯誤,你的意思是將它包含在cpp文件中,並在頭文件中聲明函數/在源文件中實現? – 2013-02-13 18:08:33