gpt4 book ai didi

c++ - - 内联函数 g++4.9.2 中的 Warray-bounds 虚假警告

转载 作者:行者123 更新时间:2023-11-30 03:58:41 24 4
gpt4 key购买 nike

我收到了我遇到过的最奇怪的警告。我有一个内联函数,我正在做类似的事情

inline int f(int n)
{
int myarray[maxn];
myarray[n-1] = 1;
}

参数maxn在头文件中定义为 constexpr .参数n传递给 f总是小于或等于 maxn在我的代码中。但是,每当我编译时,我都会收到警告

warning: array subscript is above array bounds [-Warray-bounds]

在行myarray[n-1] = 1 .

它只发生在使用 g++4.9 时( clang++ 不发出任何警告,以及以前的 g++ 版本),并且仅当函数标记为 inline 时.如果我在函数中使用测试条件,例如

if(n > maxn) cerr << "ERROR!"<< endl;

或者甚至是一个简单的显示语句

cout << n; 

警告消失了(if 当然被评估为 false ,所以不会显示错误消息,因为我绝对确定 n <= maxn; )。

有谁知道这是不是 g++问题?你以前遇到过吗?

最佳答案

gcc(herehere)似乎已多次报告数组边界检查的误报问题,例如此错误报告 Picon[Bug c/59564] New: False positive array -Warray-bounds check with -O2在使用 -02gcc 4.8.2gcc 4.9.0 时显示此代码产生误报( see it live ):

int arr[1];
int n = 0;

int main() {
if (n <= 0) n = 0;
arr[n] = 0;
if (n <= 0) n = 0;
return 0;
}

所以这可能是回归或不同形式的错误,您应该提交 bug report .

关于c++ - - 内联函数 g++4.9.2 中的 Warray-bounds 虚假警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307684/

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