Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何创建结构的常量数组?_C_Arrays - Fatal编程技术网

C 如何创建结构的常量数组?

C 如何创建结构的常量数组?,c,arrays,C,Arrays,我正在寻找一种方法来创建一个常量数组struct。 我试过这个(在头文件中): /#pragma一次 #如果没有糖果__ #定义__ #包括 #包括 typedef结构糖{ 字符名[16]; 布尔纯素; }糖果; const Candies first={“Apple”,true}; const Candies second=(“爆米花”,真的); const Candies CandiesArray[2]={first,second}; #endif/\uu CANDY\u DB\u H__

我正在寻找一种方法来创建一个常量数组struct。 我试过这个(在头文件中):

/#pragma一次
#如果没有糖果__
#定义__
#包括
#包括
typedef结构糖{
字符名[16];
布尔纯素;
}糖果;
const Candies first={“Apple”,true};
const Candies second=(“爆米花”,真的);
const Candies CandiesArray[2]={first,second};
#endif/\uu CANDY\u DB\u H__
但这似乎是错误的


最好的方法是什么?

问题是
CandiesArray
是在文件范围内声明的(在任何函数之外),这意味着它表示一个具有静态存储持续时间的对象,必须用常量表达式初始化。与C++不同,在C<代码>第一个/COD>不是一个常量表达式,尽管 const 限定符.< /P> 要纠正这种情况,可以将元素直接放入初始化器中:

const Candies CandiesArray[2] = {
    {"Apple", true},
    {"Popcorn", true}
};

不要发明以双下划线或下划线和大写字母开头的名称。它们是为“实施”保留的。是的,系统标题使用符号;他们必须这样做。您不应该这样做,因为您可能会干扰实现,或者被实现搞砸,这是您的错。太好了,谢谢!您知道如何在同一项目中的不同C文件中使用此常量吗?@s_s:通常的方法是在头文件中声明一个数组,并在其源文件中定义它。例如,您可以放置
extern const Candies CandiesArray[]进入
candy_db.h
const Candies CandiesArray[2]={…}
转到
candy_db.c
(首先必须包括其标题)。然后,您可以在其他文件中使用
CandiesArray
,包括
CandiesArray\u db.h
头文件。它可以工作,谢谢!
const Candies CandiesArray[2] = {
    {"Apple", true},
    {"Popcorn", true}
};