2011-01-10 60 views
1

我有一個在VC++下工作正常的程序,但在GCC下給我一個錯誤。'var'的存儲大小未知

log.h

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

log.cpp

 

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

能正常工作,當我編譯log.cpp。但是,如果任何其他文件包括log.h,該文件出現了錯誤:

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

我已經試過指定數組大小的名稱[]中的一個或兩個文件,但只是改變了錯誤的重新宣佈。

我該如何獲得GCC下的合作?

+0

當鏈接* .o文件或生成.o文件時,何時出現錯誤? – hhafez

+0

生成.o文件時。 – Nairou

回答

8

extern添加到log.h對您的姓名的聲明。你的符號出現在兩個地方。

+0

是的。函數不需要它(儘管它不會受到傷害),但在頭中聲明的變量需要extern。 –