C++ warning!warning!warning!

1、warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]

char *imgFile = “data/IR_62_78_150_151.jpg”;

分析 :char *背后的含义是:这个字符串,我要修改它。而传给函数的字面常量是没法被修改的。
修正:把参数类型修改为const char *

const char \*imgFile = "data/IR_62_78_150_151.jpg";

2、warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

for (int j = 0; j < shape.num_parts(); ++j)

分析:signed 和unsigned两种不同类型的比较,防止一个负的符号型的数据转化为无符号型时会产生一个很大的数据,signed 和unsigned数据的范围也不同。
修正:使用size_t 类型。

for (std::size_t j = 0; j < shape.num_parts(); ++j)

3、warning: unused variable ‘j’ [-Wunused-variable]

int i,j;
分析:代码写太长了,定义的j后面没用到。
修正:删掉j。
int i;

4、warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]

fread(MatDATA,sizeof(UNIT16),IMG_HEIGHT*IMG_WIDTH,fp);
分析:使用fread(void*, size_t, size_t, FILE*)会返回一个size_t类型的值,假如命名为sizeRead,通过判断if (sizeRead != IMG_HEIGHT*IMG_WIDTH){printf(“error!\n”);}可以知道是否读取成功。
修正:取返回值。

size_t sizeRead = fread(MatDATA,sizeof(UNIT16),IMG_HEIGHT*IMG_WIDTH,fp);
if (sizeRead != IMG_HEIGHT*IMG_WIDTH) {
    printf("error!\n");
}
5、warning: control reaches end of non-void function [-Wreturn-type]

}
分析:控制到达非void函数的结尾。本应带有返回值的函数到达结尾后可能并没有返回任何值。
修正:根据定义的类型加上返回值。
return 0; }

猜你喜欢

转载自blog.csdn.net/ffcjjhv/article/details/85068999