2011-01-10 10 views
1

私はVC++でうまく動作するプログラムを持っていますが、GCCではエラーが出ます。'var'の記憶容量はわかりません

 

std::string logType::Name[] = { 
    "None", 
    "Info", 
    "WARNING", 
    "ERROR" 
}; 

私はlog.cppをコンパイルするときにこれが正常に動作します:log.cpp

 
namespace logType { 
    enum Enum { 
     None = 0, 
     Info, 
     Warning, 
     Error, 
    }; 
    std::string Name[]; 
} 

LOG.H

。他のファイルがLOG.H、そのファイルのエラーアウト含まれている場合しかし、:

error: storage size of ‘logType::Name’ isn't known

を私は1つまたはファイルの両方に[]名の配列のサイズを指定して試してみたが、それは単に変更します再宣言のエラーです。

GCCの協力を得るにはどうすればよいですか?

+0

* .oファイルをリンクするとき、または.oファイルを生成するときに、いつエラーが発生しますか? – hhafez

+0

.oファイルを生成するとき。 – Nairou

答えて

8

externlog.hのあなたの名前の宣言を追加してください。あなたのシンボルは2つの場所に表示されます。

+0

はい。関数はそれを必要としません(害はありません)が、ヘッダに宣言された変数はexternを必要とします。 –

関連する問題