作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在让 BOOST_STATIC_ASSERT_MSG 发出有意义的错误消息时遇到问题。我把它归结为:
#include <boost/static_assert.hpp>
namespace StaticChecks
{
BOOST_STATIC_ASSERT_MSG( false, "Where is my error message?" );
}
指定的错误信息无处可见。相反,我得到以下信息:
c:\tryit> x86_64-w64-mingw32-g++ -O0 -g -m64 -Wall -IC:\boost_1_50_0 -IC:\MinGW-W64\msys\include compiletimechecks.cpp -c -o compiletimechecks.cpp.o
compiletimechecks.cpp:5:5: error: invalid application of 'sizeof' to incomplete type 'boost::STATIC_ASSERTION_FAILURE<false>'
compiletimechecks.cpp:5:5: error: template argument 1 is invalid
compiletimechecks.cpp:5:63: error: invalid type in declaration before ';' token
我在 Windows 7 上使用 GCC/C++ 64 位:
c:\tryit> x86_64-w64-mingw32-g++ --version
x86_64-w64-mingw32-g++ (Built by MinGW-builds project) 4.7.2
我在使用 gcc 4.6.3 版和 Boost 1.48 版的 Linux(Ubuntu 12.04 LTS 64 位)上遇到同样的错误。
此外,我应该补充一点,当断言成功时,它会按预期工作。
最佳答案
来自 BOOST_STATIC_ASSERT_MSG
上的文档:
If the C++0x static_assert feature is not available,
BOOST_STATIC_ASSERT_MSG(x, msg)
will be treated asBOOST_STATIC_ASSERT(x)
.
您显然是在没有 -std=c++0x
的情况下进行构建,因此 static_assert
不可用,因此不会显示消息。
关于c++ - BOOST_STATIC_ASSERT_MSG - 缺少错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17164159/
我在让 BOOST_STATIC_ASSERT_MSG 发出有意义的错误消息时遇到问题。我把它归结为: #include namespace StaticChecks { BOOST_STA
我是一名优秀的程序员,十分优秀!