【问题标题】:Issue due to porting in different gcc versions由于移植到不同的 gcc 版本而导致的问题
【发布时间】:2013-06-29 08:17:48
【问题描述】:

我有一个 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 引起的?

【问题讨论】:

  • 确实包括<linux/ipv6.h>,对吧?
  • "gcc 2.96" 实际上甚至不是 gcc 的一个版本。

标签: c linux pointers gcc


【解决方案1】:

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

如果struct 的定义位于包含文件中,由于#ifdef 取决于编译器版本,该文件以不同的顺序包含,则可能会发生这种情况。因此,您可能应该检查包含的内容的顺序。 Doxygen 可能是一个有价值的工具,可以可视化项目的包含结构。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-09-06
  • 2020-11-23
  • 1970-01-01
  • 2019-04-01
  • 2020-08-25
  • 2017-03-07
  • 2010-12-24
  • 1970-01-01
相关资源
最近更新 更多