4
我想知道这个来自编译器的消息是否应该仔细考虑。消息“GCC 4.4中传递结构与灵活数组成员的ABI已更改”重要?
让我们看看下面的代码:
struct s
{
int a;
int b[];
};
void fun(struct s c)
{
}
int main()
{
return 0;
}
它提供了以下错误:
main.c:7:6: note: the ABI of passing struct with a flexible array member has changed in GCC 4.4
我的问题是:在更大的项目是使用这样的结构是否安全?这种结构的可能风险和影响(编译器消息除外)是什么?
你是用'gcc 4.4'或更高版本构建的代码与'gcc'前''4.4'版本构建的代码混合吗? – NPE 2013-04-09 10:44:08
是的。它存在于gcc 4.4之前。代码是通过更长的时间。我最近才注意到这个笔记。 – Melon 2013-04-09 10:47:13
这不是一个错误消息,它只是警告你,你使用的构造的ABI已经改变了。在实践中,这意味着如果将用早期版本的gcc和当前版本的gcc编译的目标文件和库混合使用,就可以获得错误。 – Art 2013-04-09 10:52:30