在尝试用const初始化变量时出错“初始化器元素不是常量”我在下面的程序的第6行(将my_foo初始化为foo_init)上有一个错误,我不知道为什么。typedef struct foo_t {
int a, b, c;} foo_t;const foo_t foo_init = { 1, 2, 3 };foo_t my_foo = foo_init;int main(){
return 0;}请记住,这是我正在处理的一个更大、多文件项目的简化版本。目标是在对象文件中有一个常量,多个文件可以用来初始化状态结构。因为它是一个资源有限的嵌入式目标,而且结构也不是那么小,所以我不想要源代码的多个副本。我不想用:#define foo_init { 1, 2, 3 }我还试图编写可移植代码,所以我需要一个有效的C89或C99解决方案。这与对象文件中的org有关吗?初始化变量进入一个ORG并通过复制第二个ORG的内容进行初始化?也许我只需要改变我的策略,让一个初始化函数在启动时完成所有的副本。除非有其他的想法?
3 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
const
.
1
, 'a'
, 0xFF
sizeof
const int N = 5; /* `N` is not a constant in C */
N
static int j = N; /* ERROR */
#define
#define
小唯快跑啊
TA贡献1863条经验 获得超2个赞
具有静态存储持续时间的对象的初始化程序中的所有表达式都应该是常量表达式或字符串文本。
6.6/10 - An implementation may accept other forms of constant expressions
my_foo
int main(){ foo_t my_foo = foo_init; return 0;}
- 3 回答
- 0 关注
- 788 浏览
添加回答
举报
0/150
提交
取消