Есть ли способ отключить определенные ошибки под VS2008?

0

Я пытаюсь скомпилировать много устаревшего кода C (C99), используя VS2008. Чтобы решить некоторую проблему с кодом C99, не поддерживаемым компилятором VS2008, я переключился на компилятор C++, но теперь я столкнулся с другой проблемой с ошибкой C++:

 error C2440: '=' : cannot convert from 'void *' to 'uint8_t *'
 Conversion from 'void*' to pointer to non-'void' requires an explicit cast

Есть ли параметр в компиляторе C++, чтобы отключить эту ошибку и разрешить C-стиль при создании в C++?

  • 3
    Исправьте ошибку (C ++) в коде C99 или (если это невозможно / выполнимо) предоставьте C-библиотеку обертки вокруг исходного кода
Теги:
visual-studio-2008

1 ответ

3
Лучший ответ

Невозможно отключить эти ошибки. Это жесткие ошибки, определяемые языком. Вы не можете выбрать, какие части основного языка вы хотите придерживаться. Если это были специфические для поставщика расширения, тогда могут быть варианты их отключения, но это не так. Эти ошибки относятся к фундаментальным правилам языка C++.

Моя рекомендация состоит в том, чтобы скомпилировать этот код с истинным компилятором C99. Любая попытка скомпилировать его с MSVC 2008 (либо C, либо C++) приведет к разочарованию и боли.

Допустимо, что самая последняя версия MSVC будет лучше с этим кодом. В последних выпусках MSVC Microsoft улучшила поддержку C99 при компиляции как C. Эта поддержка для C99 не завершена, но может быть достаточно, чтобы правильно скомпилировать ваш код.

  • 0
    В C ++ нет неявного преобразования из void * в T * (следовательно, более поздние компиляторы msvc не должны его поддерживать)
  • 0
    @ DieterLücking Правильно. Я имею в виду, что VS2013 лучше поддерживает C99 при компиляции в C.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню