gpt4 book ai didi

c++ - 头文件中的全局数组...是否必须指定大小?

转载 作者:行者123 更新时间:2023-11-28 03:20:11 30 4
gpt4 key购买 nike

我在某处读到可以在头文件中声明一个(全局)数组而不指定大小。像这样:

 // Header
extern int MyArray[];

// CPP file
int MyArray[] = { 1, 4, 16, 512, 8192 };

但是当我尝试编译时,出现编译器错误 'sizeof' 对不完整类型 'double []' 的无效应用

我错过了什么吗?在前向声明的情况下,编译器是否强制您指定数组大小?

最佳答案

问题不在于您的声明或定义。问题是您尝试将 sizeof 应用于 MyArray,尽管它的类型不完整(因为它的大小已被遗漏)。

有一些绕过它的 hacky 方法,使用伴随变量来存储大小:

// Header
extern int MyArray[];
extern size_t MyArraySize;

// CPP file
int MyArray[] = { 1, 4, 16, 512, 8192 };
size_t MyArraySize = sizeof(MyArray);

现在您可以在其他翻译单元中使用MyArraySize 来确定MyArray 的大小。

但是,我建议不要使用这种方法,而是只给出数组的大小(或者避免一起使用全局变量)。

关于c++ - 头文件中的全局数组...是否必须指定大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680440/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com