none
Некорректный заголовок <cmath> в MS VC++ 2010 RRS feed

  • Вопрос

  • В MC VC++ 2010 если в свойствах проекта отключить использование расширений языка, то при компиляции заголовка <cmath> выдается множество синтаксических ошибок.

    Хотелось бы знать, исправлен этот заголовок в MS VC++ 2012 RC, или же по-прежнему при его компиляции выдаются сообщения об ошибках?

    3 августа 2012 г. 11:34

Ответы

  • Компилируйте проект целиком. У меня студия при таком порядке действий выдает предупреждение типа warning C4651: '/D_MSC_EXTENSIONS' specified for precompiled header but not for current compile. 

    По Ctrl+F7 у вас precompiled header-ы останутся с одними настройками, а файл будет скомпилирован с другими.

    Даже если у вас precompiled headers не используются - все равно, получить ошибку при компиляции всего проекта со старыми настроками, а одного отдельного файла - с новыми, можно и без багов компилятора. Поменяли настройки - сделайте полный Build.

    • Помечено в качестве ответа Abolmasov Dmitry 16 августа 2012 г. 10:07
    4 августа 2012 г. 18:35
    Модератор

Все ответы

  • Попробовал /Za на свежесозданном проекте и в 2010-й и в 12-й студии. Оба раза все вполне без ошибок скомпилировалось.
    3 августа 2012 г. 12:45
    Модератор
  • Здесь вообще какая-то чехарда имеет место быть. Сначала, когда я создал проект и изначально указал для проекта, что отключить расширения языка, то компилятор выдавал множество сообщений об ошибке для файла <cmath>. Когда же я указал, что использовать расширения языка, то эти ошибки пропали. Следующий раз когда я снова загрузил этот проект, и вновь переключил эту опцию свойств проекта на не использовать расширений языка, то никаких сообщений об оишбке не было. Однако если я изменил эту опцию и выбрал "<наследовать от родителя или от значений по умолчанию для проекта>", то опять при компиляции кода компилятор выдал множество сообщений об ошибке для заголовка <cmath>.

    Вот начало списка этих сообщений об ошибке

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(101): error C2059: синтаксическая ошибка: неправильный суффикс для числа

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(101): error C2018: неизвестный знак "0x18"

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(101): error C2059: синтаксическая ошибка: неправильный суффикс для числа

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(101): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "DPre2_impl_1p2DPre3_impl_1p2p3DPost1_impl__$notnull"

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(101): warning C4229: устаревший элемент: пропуск модификаторов для данных

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(101): error C2018: неизвестный знак "0x19"

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(101): error C2059: синтаксическая ошибка: неправильный суффикс для числа

    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(101): error C2137: пустая символьная константа


    3 августа 2012 г. 13:59
  • Хотел бы добавить, что компилировать нужно клавишами Ctrl+F7. То есть если включены расширения языка, то выключаете их и компилируете с помощью Ctrl+F7. Если сообщения об ошибке не появляются, то снова меняете эту опцию свойств и устанавливаете ее в значение "<наследовать от родителя или от значений по умолчанию для проекта>" и снова компилируете с помощью Cttrl+F7.

    Объяснить эту чехарду результатов компилятора VC++ 2010 я не могу. Очевидно, что это явный баг компилятора, так как его поведение не предсказуемо.

    3 августа 2012 г. 15:26
  • Компилируйте проект целиком. У меня студия при таком порядке действий выдает предупреждение типа warning C4651: '/D_MSC_EXTENSIONS' specified for precompiled header but not for current compile. 

    По Ctrl+F7 у вас precompiled header-ы останутся с одними настройками, а файл будет скомпилирован с другими.

    Даже если у вас precompiled headers не используются - все равно, получить ошибку при компиляции всего проекта со старыми настроками, а одного отдельного файла - с новыми, можно и без багов компилятора. Поменяли настройки - сделайте полный Build.

    • Помечено в качестве ответа Abolmasov Dmitry 16 августа 2012 г. 10:07
    4 августа 2012 г. 18:35
    Модератор
  • Пожалуйста, не забывайте отмечать ответ, решающий вашу проблему. Спасибо.


    Для связи [mail]

    16 августа 2012 г. 10:07