2016-05-09 17 views
1

This answerに何が起こったのかと重複しているので、C++コードから取り出したCヘッダーにを使用し、std::*で呼び出す必要があることを示しています。std :: assert

私はそれをやっていますが、私は例外が気づいています。 std::assertは私が正しく#include <cassert>でも定義されていないようです。

ここでは何が起こっていますか?これは実装監督ですか、実際の例外ですか?

+6

'assert'は[マクロ](http://en.cppreference.com/w/cpp/error/assert) – smac89

+1

' assert'はネームスペースで使用できないマクロとして実装されている可能性が高いインライン関数のような言語識別子を生成しません) – myaut

+0

@CaptainObvliousリンクのおかげで、それはそれまでの唯一の公式の情報です。 –

答えて

12

assertはマクロであり、関数ではありません。したがって、それは普通の古いassert(condition)と一緒に使用する必要があります。

ここにはサポートリンクhttp://en.cppreference.com/w/cpp/error/assertがあります。

+0

ちょうどここでサポートリンクが役立つかもしれないと思った:http://en.cppreference.com/w/cpp/error/assert –

9

assertはマクロなので、名前空間に制限することはできません。