初始化大小定义为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