由于移植到不同的gcc版本而导致的问题

时间:2013-06-29 08:17:49

标签: c linux pointers gcc

我有一个C代码,我在第三行收到错误:

struct in6_pktinfo *ptr;
ptr = (struct in6_pktinfo *) CMSG_DATA (cmsgptr);
*ifindex = ptr->ipi6_ifindex;


ERROR: dereferrencing pointer to incomplete type

如果gcc 4.6/4.7使用centos / ubuntu发行版,但不是gcc 2.96

现在,我如何确定此问题是由gcc引起的?

1 个答案:

答案 0 :(得分:2)

gcc 2.96真的很旧,你不应该依赖它所说的。

如果struct的定义在include文件中,由于#ifdef依赖于编译器版本而被包含在不同的顺序中,那么这样的事情就会发生。所以你可能应该检查包含哪些订单。 Doxygen可能是一个有价值的工具,可视化项目的包含结构。