首页 > 解决方案 > c++ 用于数组大小的外部常量 int

问题描述

我的代码中有以下三个文件(删除了大部分代码。这只是为了隔离问题)。

全球.h:

//global.h
#ifndef GLOBAL_H
#define GLOBAL_H
extern const int ARRAYSIZEX;
extern const int ARRAYSIZEY;
extern const int ARRAYSIZEZ;
#endif //GLOBAL_H

全球.cpp:

//global.cpp
#include "global.h"
const int ARRAYSIZEX = 5;
const int ARRAYSIZEY = 2;
const int ARRAYSIZEZ = 4;

主要的:

//main
#include "global.h"
using namespace std;

someType mySomeTypeArray[ARRAYSIZEX][ARRAYSIZEY][ARRAYSIZEZ];

int main(int argc, char **argv)
{
//...
}

编译在 mySomeTypeArray 的声明中给了我三个错误。

错误:数组绑定在 ']' 标记之前不是整数常量

我想将此应用程序的全局变量和数组大小定义保留在 global.h/cpp 中,仅用于组织,以便我的所有配置参数都在一个地方。实现我想要做的事情的正确方法是什么?

谢谢

标签: c++arraysconstantsglobalextern

解决方案


这里的问题是extern int xx在另一个文件中定义,但不要担心细节,你只需要知道它是一个int”。这通常已经足够好了,除非编译器需要立即知道x是什么。

由于这是在整个其他文件中定义的,因此它不能。该文件必须在它知道之前进行编译,并且由于 C++ 的工作方式,该编译的结果不会影响该文件的编译。

const int如果要共享这些值,则需要在标头中将其声明为 a 。extern int不会剪的。

尽管这是一个微不足道的例子,但根本没有理由继续这样做extern。只需将头文件中的值定义为常规const int


推荐阅读