【发布时间】:2018-06-29 02:17:19
【问题描述】:
在许多其他情况下,gcc 似乎能够检测到循环开始时的条件初始化变量。如果我放弃增量运算符,它甚至可以工作。如果没有 -02 标志,它也会消失。我已经学会相信编译器警告通常确实意味着有问题,所以我想知道我是否缺少某些东西,或者这只是一个奇怪的编译器怪癖。
void act(char **);
void test(int width, int height){
char * rowA[width];
char ** A;
for (int i = 0; i < width * height; ++i){
if (!(i % width)){
if (i){
act(rowA);
}
rowA[0] = 0;
A = rowA;
}
*A++ = "hello";
}
}
在gcc-6.3.0 和-Wall -Werror -02 上编译
编辑:为避免混淆,我已将代码更改为更接近实际用例。
【问题讨论】:
-
您是否更改了
!(i % argc)以触发此警告? (另外,你可以试试 gcc 8.1.1 吗?) -
@Ry- 在我正在处理的实际代码中是
i < width * height和i % width。找不到尝试8.1.1的好方法,但8.1.0仍然显示警告。
标签: c gcc gcc-warning