與海灣合作委員會(GCC)的工作,我嘗試編譯這個程序 -結構intitialization符號不與4.4.6堆中分配存儲
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(int argc, char *argv[])
5 {
6
7 struct B {
8 int i;
9 char ch;
10 };
11
12 struct B *ptr;
13
14 ptr = (struct B*) calloc(1, sizeof(struct B));
15
16 *ptr = {
17 .i = 10,
18 .ch = 'c',
19 };
20
21 printf("%d,%c\n", ptr->i, ptr->ch);
22
23 return 0;
24 }
25
$ make
gcc -g -Wall -o test test.c
test.c: In function ‘main’:
test.c:16: error: expected expression before ‘{’ token
make: *** [test] Error 1
可能是他還需要一個**指定初始值設定項**的示例** –
@LidongGuo添加了示例,但這不適用於堆對象。 –
好吧,「不可能」是一個字符串詞,考慮到OP要做的事可以通過* compound literal *來完成,如我的答案所示。從概念上講,這當然不是同一回事,但實際上它只是在OP中希望它做的事情上做些小改動。 – AnT