在嘗試用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 關注
- 831 瀏覽
添加回答
舉報
0/150
提交
取消