如何创建const数组的结构?

时间:2017-11-11 14:18:19

标签: c arrays

我正在寻找一种创建常量结构数组的方法。 我尝试了这个(它是头文件中的#);

//#pragma once
#ifndef __CANDY_DB_H__
#define __CANDY_DB_H__

#include <stdbool.h>
#include <string.h>

typedef struct Candy {
    char Name[16];
    bool Vegan;
}Candies;

const Candies  first = {"Apple",true};

const Candies second = ("Popcorn", true);

const Candies CandiesArray[2] = { first, second };

#endif //__CANDY_DB_H__

但这似乎是错误的。

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

问题是CandiesArray在文件范围(任何函数之外)声明,这意味着它表示具有静态存储持续时间的对象,必须通过常量表达式初始化。与C ++不同,C first不是常量表达式,尽管有const限定符。

要解决这种情况,您可以将元素直接放在intitializer中:

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