在c ++中禁用警告

时间:2014-03-28 15:15:09

标签: c++ qt warnings

我是c ++的新手。我正在编译Qt上的代码源。我有这个警告:

  

在../ListAllPrsilicaCameras/main.cpp:3中包含的文件中:   在/usr/include/c++/4.2.1/backward/iostream.h:31中包含的文件中:   /usr/include/c++/4.2.1/backward/backward_warning.h:32:2:警告:此文件至少包含一个已弃用或过时的标头。请考虑使用C ++标准第17.4.1.2节中的32个标头之一。示例包括将标头替换为C ++包含的标头,或者代替不推荐使用的标头。要禁用此警告,请使用-Wno-deprecated。 [-W#警告]

     

#warning此文件至​​少包含一个已弃用或过时的标题。

     

^ 1生成警告


我也收到了这些警告:

../ListCamerasProsilicaII/main.cpp:79:51: warning: unused parameter 'junk' [-Wunused-parameter]
void SetConsoleCtrlHandler(void (*func)(int), int junk)
                                                  ^
../ListCamerasProsilicaII/main.cpp:89:23: warning: unused parameter 'Signo' [-Wunused-parameter]
void CtrlCHandler(int Signo)
                      ^
../ListCamerasProsilicaII/main.cpp:140:57: warning: flag ' ' results in undefined behavior with 'u' conversion specifier [-Wformat]
                        printf("%s - %8s - Unique ID = % 8lu IP@ = %15s [%s]\n",cameraList[i].SerialString,
                                                       ~^~~~
../ListCamerasProsilicaII/main.cpp:147:57: warning: flag ' ' results in undefined behavior with 'u' conversion specifier [-Wformat]
clang++ -headerpad_max_install_names -mmacosx-version-min=10.6 -o ListCamerasProsilicaII main.o   -L/opt/local/lib/ -lPvAPI -lPvJNI -L/opt/local/lib -lJPEG -F/Users/rafikgouiaa/Qt//5.0.2/clang_64/lib -framework QtCore 
                        printf("%s - %8s - Unique ID = % 8lu (unavailable, %u)\n",cameraList[i].SerialString,
                                                       ~^~~~
../ListCamerasProsilicaII/main.cpp:152:53: warning: flag ' ' results in undefined behavior with 'u' conversion specifier [-Wformat]
                    printf("%s - %8s - Unique ID = % 8lu (*)\n",cameraList[i].SerialString,
                                                   ~^~~~
../ListCamerasProsilicaII/main.cpp:171:14: warning: unused parameter 'argc' [-Wunused-parameter]
int main(int argc, char* argv[])
             ^
../ListCamerasProsilicaII/main.cpp:171:26: warning: unused parameter 'argv' [-Wunused-parameter]
int main(int argc, char* argv[])
                         ^
7 warnings generated.

如何禁用此警告?

3 个答案:

答案 0 :(得分:3)

答案在警告信息中:

修改

  

警告:此文件至少包含一个已弃用或过时的文件   头。请考虑使用部分中的32个标题之一   C ++标准的17.4.1.2。示例包括将标头替换为C ++包含的标头,或代替   已弃用的标头。要禁用此警告,请使用   -Wno弃用。 [-W#警告]

iostream.h替换为iostream C ++的标题现在不再需要.h扩展名。

答案 1 :(得分:3)

重复上一个答案"答案在警告信息中。"

"To disable this warning use -Wno-deprecated."

您可以在Qt项目文件(.pro)中指定编译器标志,添加以下行:

QMAKE_CXXFLAGS += -Wno-deprecated

P.S。修复代码本身会更好

答案 2 :(得分:1)


warning: unused parameter 'argc' [-Wunused-parameter]
int main(int argc, char* argv[])
             ^
warning: unused parameter 'argv' [-Wunused-parameter]
int main(int argc, char* argv[])

更改main的定义:

int main()
{
  // ...

it's standard compliant


warning: unused parameter 'junk' [-Wunused-parameter]
void SetConsoleCtrlHandler(void (*func)(int), int junk)

在函数实现中,不命名参数也是合法的。当函数需要声明参数具有特定的固定签名时,这很有用,但不需要参数(例如,对于派生类中的方法,回调函数或模板参数,可能会发生这种情况)。 / p>

因此,如果是这种情况,您可以更改函数定义:

void SetConsoleCtrlHandler(void (*func)(int), int)
{
  //...

如果您控制头文件,请修复它!对于那些你没有(系统,第三方库...)你可以使用-isystem标志(这将使他们"系统标题"和GCC / CLANG赢了&#39 ; t报告他们的警告。)

E.g。

QMAKE_CXXFLAGS += -isystem ...