BOOST_STATIC_ASSERT_MSG이 (가) 문제가 발생하여 의미있는 오류 메시지가 표시됩니다. 나는 이것을 다음과 같이 삶아 냈다 :BOOST_STATIC_ASSERT_MSG - 오류 메시지가 누락되었습니다.
#include <boost/static_assert.hpp>
namespace StaticChecks
{
BOOST_STATIC_ASSERT_MSG(false, "Where is my error message?");
}
지정된 오류 메시지가 보이지 않는다. 나는 윈도우 7에있어
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
및 GCC/C++ 64 비트 사용 : 나는 리눅스 (우분투 12.04 LTS 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
또한 어설 션이 성공하면 예상대로 작동한다는 것을 추가해야합니다. BOOST_STATIC_ASSERT_MSG
에 워드 프로세서
+1 내가 추가하고 싶은 내용입니다. 하지만 C++ 11 이전에'typedef' 또는'array'의 이름으로 메시지를 보여주는'BOOST_STATIC_ASSERT'를 생각해 봅니다. (그리고 나는 그것을 작동 전환시킬 수 없습니다 -std = C++ 0x off). 나는 그들이 최근 버전에서 기계를 변경했다고 생각한다. 동일한 페이지에서 : * "BOOST_STATIC_ASSERT (x)의 경우, 오류 메시지는 x"의 문자열 버전이됩니다. * – jrok
@Angew : 예, -std = C++ 0x 옵션을 추가하면 BOOST_STATIC_ASSERT_MSG가 예상대로 작동합니다. 불행하게도 현재 진행중인 프로젝트에서 판도라의 다른 컴파일 문제 상자를 열어서이 옵션을 사용하지 않을 것입니다. 그러나 적어도 미래에 언젠가해야 할 일을 이제는 알았습니다. – ebbek