在 1.43 boost 上,似乎 BOOST_STATIC_ASSERT 只允许放置一个布尔值,是否有一些替代方法可以让我在编译错误时也显示一条消息?
问问题
4020 次
3 回答
5
MPL 有BOOST_MPL_ASSERT_MSG
. 例如使用 GCC 4.2。有了这个:
BOOST_MPL_ASSERT_MSG(false, THIS_DOESNT_WORK, (void));
... 结果是:
/path/to/file.cpp:42: error: no matching function for call to
'assertion_failed(mpl_::failed************ (function()::THIS_DOESNT_WORK::************)())'
于 2010-07-13T21:39:39.180 回答
3
您是否尝试过类似的方法:
BOOST_STATIC_ASSERT(sizeof(long) == 64 && "Must have 64-bit long!")
如果你的编译器支持 C++0x static_assert,你可以这样做:
static_assert(sizeof(long) == 64, "Must have 64-bit long!")
于 2010-07-13T21:42:59.520 回答
0
Boost 1.47 及更高版本的支持BOOST_STATIC_ASSERT_MSG
。用法:
#include <boost/static_assert.hpp>
BOOST_STATIC_ASSERT_MSG(condition, msg)
如果 C++11 可用,或者编译器支持static_assert()
,则错误消息将为msg
字符串。否则宏被视为BOOST_STATIC_ASSERT(condition)
于 2016-04-28T08:25:30.460 回答