初始化大小定義爲extern const的數組時,出現問題。 我一直遵循的規則是全局變量應該在頭文件中聲明爲extern,並且它們的相應定義應該放在其中一個實現文件中,以避免可變的重新聲明錯誤。這種方法運行良好,直到我不得不初始化一個數組,其大小定義爲一個extern const。 我收到一個錯誤,表示一個常量表達式。但是,如果我試圖給const變量賦值,編譯器會正確地抱怨一個值不能被賦值給一個常量變量。這實際上證明編譯器確實將該變量看作一個常量。那麼爲什麼在嘗試聲明相同大小的數組時報告了錯誤?聲明大小聲明爲extern的數組const
有沒有什麼辦法避免這種情況,而不使用#define?我也想知道這個錯誤的原因。
Package.h:
#ifndef PACKAGE_H
#define PACKAGE_H
extern const int SIZE;
#endif
Package.cpp:
#include "Package.h"
const int SIZE = 10;
Foo.cpp中:
#include "Package.h"
int main()
{
// SIZE = 5; // error - cannot assign value to a constant variable
// int Array[SIZE]; // error - constant expression expected
return 0;
}
您可以使用四個空格縮進代碼以對其進行格式化。 – Thomas 2009-11-07 14:16:28