我正在寻找一种创建常量结构数组的方法。 我尝试了这个(它是头文件中的#);
//#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__
但这似乎是错误的。
最好的方法是什么?
答案 0 :(得分:1)
问题是CandiesArray
在文件范围(任何函数之外)声明,这意味着它表示具有静态存储持续时间的对象,必须通过常量表达式初始化。与C ++不同,C first
不是常量表达式,尽管有const
限定符。
要解决这种情况,您可以将元素直接放在intitializer中:
const Candies CandiesArray[2] = {
{"Apple", true},
{"Popcorn", true}
};