VS2015中Boost包编译器注释干扰构建的解决方法问询
解决VS2015(警告等级3)下Boost头文件产生的编译器注释干扰问题
我之前也碰到过一模一样的情况,VS2015在警告等级3的配置下,确实会把Boost头文件里的一些内部提示信息输出出来,搞得构建日志乱糟糟的。这里给你几个实用的解决方案:
精准压制Boost头文件的警告/提示
最推荐的方式是用编译器指令临时降低警告等级,包裹Boost头文件的引用,既不会影响项目其他代码的警告检查,又能屏蔽Boost的冗余信息:#pragma warning(push, 0) #include <boost/signals2/connection.hpp> // 这里可以放所有需要引入的Boost头文件 #pragma warning(pop)这段代码会把当前警告等级临时压到0,引入Boost头时就不会输出那些note级别的提示,之后自动恢复原来的警告等级。
针对性禁用特定提示码
如果能看到完整的提示信息(可以把VS构建输出的详细程度调到"详细",就能看到没被截断的内容),找到对应的警告码,直接在项目属性的"C/C++ -> 预处理器 -> 预处理器定义"里添加_CRT_SECURE_NO_WARNINGS这类宏,或者在编译器选项里加/wd[警告码],比如常见的/wd4668(禁用"宏未定义被视为0"的note提示)。升级Boost版本
你用的Boost 1.65.1算是比较老的版本了,后续的Boost稳定版(比如1.70及以上)针对VS编译器做了不少兼容性优化,很多这类不必要的提示输出已经被修复了,升级到新版本说不定能直接解决问题。检查VS2015的更新补丁
VS2015的Update 3是很重要的一个补丁包,如果你还没安装,建议补上——早期版本的VS2015编译器在处理模板类注释、提示信息时存在一些小bug,更新后可能会缓解这类干扰。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

