叮当:将特定警告标记为非错误
Clang: mark a specific warning as non error
我正在尝试将所有警告标记为错误以防止新警告蔓延,但我想保持现有代码库正常工作,因此我将其中一些标记为非错误-Wno-error=foo
。问题是一些警告仍然被报告为错误而不是警告,即使它们已被标记为无错误:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -Xclang -include-pch -Xclang Pch/UI-ProjectScreen/c++.pch -pipe -stdlib=libc++ -Wall -Wextra -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wheader-hygiene -Wmissing-declarations -Wunreachable-code -Wuninitialized -Woverloaded-virtual -Werror -Wno-error=deprecated-declarations -Wno-error=logical-op-parentheses -Wno-error=missing-field-initializers -Wno-error=non-virtual-dtor -Wno-error=pedantic -Wno-error=reorder -Wno-error=return-stack-address -Wno-error=sign-compare -Wno-error=switch -Wno-error=unreachable-code -Wno-error=unused-const-variable -Wno-error=unused-parameter -Wno-error=unused-private-field -Wno-error=unused-variable -Wno-error=#warnings -Wno-deprecated-register -Wno-extra-semi -Wno-backslash-newline-escape -Wno-missing-braces -isystem /Developer/Boost/1.57.0-Clang/include -isystem /Developer/Qt5.6.1-clang/5.6/clang_64/include -g -fPIC -std=gnu++1y -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -mmacosx-version-min=10.8 -W -D_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_XMLPATTERNS_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../../../../Modules/UI/ProjectScreen -I. -I/Developer/Boost/1.57.0-Clang/include -I../../../../ThirdParties/Glew/1.13.0/include -I../../../../ThirdParties/TBB/include -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtWidgets.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtGui.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtXml.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtXmlPatterns.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtNetwork.framework/Headers -I/Developer/Qt5.6.1-clang/5.6/clang_64/lib/QtCore.framework/Headers -IMoc -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/AGL.framework/Headers -IUi -I/Developer/Qt5.6.1-clang/5.6/clang_64/mkspecs/macx-clang -F/Developer/Qt5.6.1-clang/5.6/clang_64/lib -o Obj/ProjectScreenWidget.o ../../../../Modules/UI/ProjectScreen/ProjectScreenWidget.cpp
../../../../Modules/UI/ProjectScreen/ProjectScreenWidget.cpp:597:9: error: missing field 'duration' initializer [-Werror,-Wmissing-field-initializers]
};
^
1 error generated.
make: *** [Obj/ProjectScreenWidget.o] Error 1
12:09:36: The process "/usr/bin/make" exited with code 2.
如您所见,我传递-Werror
和-Wno-error=missing-field-initializers
那么为什么编译在missing-field-initializers
上出错?我当然可以修复警告,但我想先了解发生了什么。
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ --version
Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
我在这里错过了一些明显的东西吗?
编辑:我刚刚尝试了 http://gcc.godbolt.org/#,它似乎按预期运行,我无法在那里重现相同的问题......
我终于发现了问题:我正在使用qmake
来生成makefile,并且它在我的设置后自动添加-W
,这实际上忽略了我之前设置的所有警告选项。
所以我更改了QMAKE_CXXFLAGS_WARN_ON
变量以删除该-W
选项并修复了它。
QMAKE_CFLAGS_WARN_ON -= -Wall -W
QMAKE_CXXFLAGS_WARN_ON -= -Wall -W
我也可以编辑 makespec 文件,但我认为这个解决方案更干净,更能抵抗用户错误(即在(重新)安装 Qt 等时)。
相关文章:
- 警告处理为错误这里有什么问题
- Static_cast转换为错误的数据类型,但结果仍然正确?
- 当警告为错误时使用 [[已弃用]] 属性 (-Werror)
- 如何避免使用多个if-else来检查返回值是否为错误代码?
- Visual Studio 2015转到定义为错误的课程
- 在Visual C++中,未声明的变量未标记为错误
- 如何将Hresult转换为错误描述
- 将 std::vector 的缓冲区替换为错误定位的字符数组
- 链接器命令失败,退出代码为1(错误;似乎无法修复)
- 为什么编译器不将其标记为错误而不是警告
- "模板参数数量错误(2,应为 4)"错误,带有 std::map 和 typedef
- 如果在C++中,则为错误条件
- C++内存:删除未使用的布尔数组可以将结果从正确更改为错误
- Linux C++, libnoise, getvalue() 返回值 > 1?(报告为错误)
- ::func未被声明为错误
- 如何将警告C4715转换为错误
- c++中的纠错循环,查找字符串中的特定字符并将其标记为错误输入
- GetExitCodeProcess是否有可能将退出代码设置为错误的值?
- 如何为错误输入编写异常处理
- "对象"未被声明为错误