【发布时间】:2013-11-29 10:09:16
【问题描述】:
在 xen-4.2.3 中构建 tools/qemu-xen 时出错。
当我makeqemu-xen时抱怨:
/home/xen/xen-4.2.3/tools/qemu-xen/linux-user/signal.c:3468:24: error: field ‘info’ has incomplete type
make[1]: *** [signal.o] Error 1
make: *** [subdir-cris-linux-user] Error 2
这就是源代码:
3465 struct rt_signal_frame {
3466 struct siginfo *pinfo;
3467 void *puc;
3468 struct siginfo info;
3469 struct ucontext uc;
3470 uint8_t retcode[8]; /* Trampoline code. */
3471 };
我找不到任何不妥之处,最连线的是info字段不是siginfo的第一个引用,为什么它不抱怨*pinfo(在3466)?
我也在 xen-4.2.2 中尝试过,结果是一样的。两个编译都是在官方 tarball 上进行的。有没有其他人遇到过同样的问题?
【问题讨论】:
-
它不会抱怨
pinfo,因为那是一个指针。在 C 中,您可以安全地创建一个指向不完整类型的指针,因为编译器唯一需要知道的是指针的大小,而不是所指向的东西的大小。