gpt4 book ai didi

gcc - 使用灵活数组抑制结构的 -Wlto-type-mismatch 警告

转载 作者:行者123 更新时间:2023-12-04 15:52:05 28 4
gpt4 key购买 nike

我正在使用 -Wlto-type-mismatch 进行 gcc 编译和 -Werror设置(为了项目的其余部分)。我有一个 extern struct一个灵活的数组引发了 lto-type-mismatch警告/错误。

这里的代码提炼成一个例子:

小时:

typedef struct {
int i;
int ints[];
} struct_t;

交流:
#include "h.h"

extern struct_t my_struct;

int main() { // just here to avoid optimizing away the decls
return my_struct.ints[0];
}

公元前:
#include "h.h"

struct_t my_struct = {
20,
{
1,
2,
},
};

编译(此处使用 arm gcc,但使用 native gcc 也会失败)
$ arm-none-eabi-gcc -flto -Wlto-type-mismatch -Werror a.c b.c -o foo
a.c:3:17: error: size of 'my_struct' differ from the size of original declaration [-Werror=lto-type-mismatch]
extern struct_t my_struct;
^
b.c:3:10: note: 'my_struct' was previously declared here
struct_t my_struct = {
^
lto1: all warnings being treated as errors

我试过将一个或两个声明包装在
#pragma gcc diagnostic push
#pragma gcc diagnostic ignore "-Wlto-type-mismatch"
<decl>
#pragma gcc diagnostic pop

但我无法抑制警告,可能是因为它是链接时优化和 #pragma在那一点上,线条早已不复存在。

问题

你能建议一些方法来编译它并在其他地方保留警告吗? (或者 -Wlto-type-mismatch 不应该提示灵活的数组?如果是这样,我可以提交错误报告。)

最佳答案

在查询 gcc-help 邮件列表后,我提交了一个错误:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81440 .有事时会在这里跟进。]

跟进:从 gcc 7.3.1 或更早版本开始,该错误已得到修复。

关于gcc - 使用灵活数组抑制结构的 -Wlto-type-mismatch 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45047888/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com