C 如何创建结构的常量数组?
我正在寻找一种方法来创建一个常量数组struct。 我试过这个(在头文件中):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__
/#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 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}
};