如何处理"warn_unused_result [-Wunused-result]"?

How to handle "warn_unused_result [-Wunused-result]"?

我是 C++ 新手,收到编译器警告,我不确定如何解决。当我编译 INBAND1->RasterIO(GF_Read, 0, y, xsize, 1, agc_data, xsize, 1, GDT_Float32, 0, 0);c++ calc_emissions.cpp -o calc_emissions.exe -lgdal 我收到警告

/usr/local/app/emissions/cpp_util/calc_gross_emissions_generic.cpp: In function 'int main(int, char**)':
/usr/local/app/emissions/cpp_util/calc_gross_emissions_generic.cpp:382:18: warning: ignoring return value of 'CPLErr GDALRasterBand::RasterIO(GDALRWFlag, int, int, int, int, void*, int, int, GDALDataType, GSpacing, GSpacing, GDALRasterIOExtraArg*)', declared with attribute warn_unused_result [-Wunused-result]
 INBAND1->RasterIO(GF_Read, 0, y, xsize, 1, agc_data, xsize, 1, GDT_Float32, 0, 0);
 ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我的代码在出现警告的情况下运行良好,但我想抑制或解决警告。我的理解是警告是由于 RasterIO() 没有 return 值(基于 this)。为了抑制警告,我尝试了 INBAND1->(void)!RasterIO(GF_Read, 0, y, xsize, 1, agc_data, xsize, 1, GDT_Float32, 0, 0); 按照建议 。但是,这会产生以下错误

/usr/local/app/emissions/cpp_util/calc_gross_emissions_generic.cpp: In function 'int main(int, char**)':
/usr/local/app/emissions/cpp_util/calc_gross_emissions_generic.cpp:382:10: error: expected unqualified-id before '(' token
 INBAND1->(void)!RasterIO(GF_Read, 0, y, xsize, 1, agc_data, xsize, 1, GDT_Float32, 0, 0);
          ^
/usr/local/app/emissions/cpp_util/calc_gross_emissions_generic.cpp:382:11: error: expected primary-expression before 'void'
 INBAND1->(void)!RasterIO(GF_Read, 0, y, xsize, 1, agc_data, xsize, 1, GDT_Float32, 0, 0);
           ^~~~

我的印象是添加 (void)!(或 (void))在这里不起作用,因为该行的 INBAND1-> 部分。有关如何处理此警告的任何建议?谢谢。

how to handle this warning?

处理错误

CPLErr errcode = INBAND1->RasterIO(GF_Read, 0, y, xsize, 1, agc_data, xsize, 1, GDT_Float32, 0, 0);
if (errcode != 0) {
    std::err << "och no rasterIO failed!\n";
    std::exit(1);
}

how to silence the compiler?

(void)放在行的前面。

(void)INBAND1->RasterIO(GF_Read, 0, y, xsize, 1, agc_data, xsize, 1, GDT_Float32, 0, 0);