gpt4 book ai didi

linux - 为什么某些已弃用的类在使用 g++ 编译时不会生成警告?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:31:29 26 4
gpt4 key购买 nike

我今天注意到我的一个头文件仍在使用 auto_ptr<>模板。

我正在使用 -std=c++11 来确保在 C++11 中编译,并使用 -pedantic 和 -Werror 来检测弃用的用法。所以我想我应该在编译该 header 时出错,因为 auto_ptr 被标记为已弃用,您怎么看?

类中有部分带有冒犯性的定义:

class server
{
[...snip...]

private:
std::auto_ptr<snap_listen_thread> f_listen_runner;
std::auto_ptr<snap_thread> f_listen_thread;

[...snip...]
};

下面列出了所有的命令行选项。我使用的是 g++ 版本 4.8.2 (Ubuntu 4.8.2-19ubuntu1),正如我们所见,列表中有 -pedantic 和 -Werror:

cd /home/snapwebsites/BUILD/snapwebsites/lib && /usr/bin/c++ -DCONTROLLED_VARS_DEBUG -DDEBUG -DQT_CORE_LIB -DQT_DEBUG -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -D_DEBUG -Dsnapwebsites_EXPORTS -std=c++11 -Werror -Wall -Wextra -pedantic -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Winit-self -Wlogical-op -Wmissing-include-dirs -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=4 -Wundef -Wno-unused -Wunused-variable -Wno-variadic-macros -Wno-parentheses -Wno-unknown-pragmas -Wwrite-strings -Wswitch -fdiagnostics-show-option -fPIC -Wunused-parameter -Wfloat-equal -Wold-style-cast -Wnoexcept -g -g -O0 -fPIC -I/home/snapwebsites/snapwebsites -I/home/snapwebsites/snapwebsites/lib -I/home/snapwebsites/BUILD/snapwebsites -I/home/snapwebsites/BUILD/snapwebsites/lib -I/home/snapwebsites/BUILD/dist/include -I/home/snapwebsites/BUILD/dist/include/advgetopt -I/home/snapwebsites/BUILD/dist/include/QtSerialization -isystem /usr/include/qt4 -isystem /usr/include/qt4/QtXmlPatterns -isystem /usr/include/qt4/QtXml -isystem /usr/include/qt4/QtCore -isystem /usr/include/qt4/QtDesigner -isystem /usr/include/qt4/QtDeclarative -isystem /usr/include/qt4/QtScriptTools -isystem /usr/include/qt4/QtDBus -isystem /usr/include/qt4/QtSql -isystem /usr/include/qt4/QtOpenGL -isystem /usr/include/qt4/QtNetwork -isystem /usr/include/qt4/QtWebKit -isystem /usr/include/qt4/QtHelp -isystem /usr/include/qt4/QtUiTools -isystem /usr/include/qt4/QtTest -isystem /usr/include/qt4/QtScript -isystem /usr/include/qt4/QtSvg -isystem /usr/include/qt4/Qt3Support -isystem /usr/include/qt4/QtGui -isystem /usr/share/qt4/mkspecs/default -isystem /usr/include/proc -o CMakeFiles/snapwebsites.dir/snap_initialize_website.cpp.o -c /home/snapwebsites/snapwebsites/lib/snap_initialize_website.cpp

g++ 中是否存在错误,它偶尔会检测到此类已弃用的模板?

最佳答案

正如我的一条评论中提到的,在其他人的帮助下,我发现 -isystem 命令行选项是罪魁祸首。

g++ 用一个不警告这个标志标记所有东西,当引用这些库中的任何东西时,这个和它们包含的任何东西都设置了标志......不幸的是很多库(有点 Qt 和特别是 log4cplus) 不要在没有警告的情况下编译。

关于linux - 为什么某些已弃用的类在使用 g++ 编译时不会生成警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26695014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com