我是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.
如何禁用此警告?
答案 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()
{
// ...
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 ...