static_assert не работает в Visual C ++ 10 - PullRequest
2 голосов
/ 06 июля 2011

Я был под впечатлением В Visual C ++ 10 было встроено static_assert. Однако, когда я компилирую следующее

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

Я получаю

ошибка C3861: «static_assert»: идентификатор не найден

Что я делаю неправильно и как мне использовать static_assert в Visual C ++ 10?

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

Причина была в том, что Visual Studio был настроен на использование компилятора Visual C ++ 9 (тот, который поставляется с Visual Studio 2008).Я не знаю, как это произошло, возможно, мастер, настраивающий Visual Studio, импортировал пути к предыдущей версии.

Настройки изменены в свойствах проекта - на панели «Каталоги VC ++».Самый простой способ проверить, какой компилятор вызывается, - добавить параметр -Bv в командную строку компилятора, который заставит компилятор сообщать свою версию.

2 голосов
/ 06 июля 2011

У меня сложилось впечатление, что Visual C ++ 10 имеет встроенный static_assert.

Это действительно так, и это прекрасно скомпилируется для меня:

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

У вас есть другие ошибки в вашем коде? Возможно, эта ошибка является результатом цепочки других ошибок.

...