聲明我正在使用C++多個定義與常量連接錯誤中.H
定義Constanst.h
#ifndef __CONSTANTS_H__
#define __CONSTANTS_H__
namespace A{
namespace B{
const int FIRST = 1;
const int SECOND = 2;
}
}
#endif
我包括從2個不同的.cpp此文件中的一些常數(A.cpp和B.cpp)
GCC 3.2.3版是給我的「多重定義」鏈接錯誤
我只包括另一「File.h」,其中包括「Constants.h」解決問題,decla res與「extern」相同的常量
有人可以解釋爲什麼嗎?我想這也許是C的一個問題,而不是C++
添加標頭警衛或#pragma一次 – Sugar
@Sugar我認爲這沒有幫助。 – Danh
這些常數是什麼類型?如果您在頭文件中聲明變量,那麼它們將在包含該頭的每個編譯單元中實例化。有很多方法可以解決這個問題,但通常當人們在頭文件中聲明變量(常量或不是)時,他們會在.c文件中定義它們。你的'extern'只是向編譯器保證變量是在其他地方定義的,並且鏈接器會希望在編譯對象中找到它們。 –