1

私は印象に残っていましたVisual C++ 10 had built-in static_assert。 「static_assert」:識別子Visual C++ 10ではstatic_assertが動作しません

を見つけていない、私は間違って何をやっているとどのように私はビジュアルでstatic_assertを使うのですか、私は以下の

void test() 
{ 
    static_assert(sizeof(char) == 1, ""); 
} 

をコンパイルするときしかし、私は

エラーC3861を取得しますC++ 10?

+0

誤ったVS10のパックですか? –

+2

これはVS2010、SP1で期待どおりにコンパイルされます。 –

+0

一般的な設定のあなたのツールセットが間違っていて、古いコンパイラを指しているかもしれません。これは、コンパイラスイッチがC++ 0xを無効にすることを知らないためです。 – mkaes

答えて

2

理由はVisual StudioがVisual Studio 2008に付属しているVisual C++ 9コンパイラを使用するように設定されていたからです。私はそれがどうなったのかわからない、恐らくウィザードは以前のバージョンへのVisual Studioインポートされたパスを設定していた。

設定はプロジェクトプロパティ - 「VC++ Directories」ペインで変更されます。どのコンパイラが呼び出されたかを確認する簡単な方法は、コンパイラのコマンドラインに-Bvオプションを追加して、コンパイラがバージョンを報告するようにすることです。

2

Visual C++ 10にはstatic_assertが組み込まれていました。

それは確かにありません、これは私のために完全に正常にコンパイル:

int main(){ 
    static_assert(sizeof(char) == 1, ""); 
} 

は、あなたのコード内の任意の他のエラーを持っていますか?多分、このエラーは他のエラーの連鎖の結果です。

+1

コンパイルフラグに関連している可能性があります... 'static_assert'はオプションによって無効にされる可能性のあるC++ 0x機能ですか? –

+2

@David:Afaik VC10でC++ 0xサポートを無効にするオプションはなく、言語拡張( '/ Za')を無効にしてもエラーは発生しません。 – Xeo

関連する問題