- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到了我遇到过的最奇怪的警告。我有一个内联函数,我正在做类似的事情
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
(here 和 here)似乎已多次报告数组边界检查的误报问题,例如此错误报告 Picon[Bug c/59564] New: False positive array -Warray-bounds check with -O2在使用 -02
和 gcc 4.8.2
和 gcc 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/
我环顾四周,没有找到任何可以帮助我的东西……我正在构建一个内核并得到了一些,数组下标超出了数组边界,警告导致构建失败。我正在使用 Linaro 工具链并设置为 -O3,因此任何警告都会导致构建失败..
我在以下代码段中遇到问题并发出警告,希望您能帮助我: fprintf (fp, "%dd%d+%d ", pMobIndex->mana[DICE_NUMBER], DICE_NUMBER 在我
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 6 年前。 这个问题是由于打字错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在
我想在gcc8.2下启用数组边界检查,这样可以帮助在编译期间检查数组下标是否越界,它可能会给出如下警告:数组下标高于数组边界 [-Warray-bounds] 我使用 coliru 做了一个演示: #
我收到了我遇到过的最奇怪的警告。我有一个内联函数,我正在做类似的事情 inline int f(int n) { int myarray[maxn]; myarray[n-1] = 1
我仍然不明白为什么我收到这个警告 array subscript is above array bounds [-Warray-bounds] 对于一个小的 C 代码如下: #include #in
我是一名优秀的程序员,十分优秀!