Я пытаюсь скомпилировать много устаревшего кода 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++?
Невозможно отключить эти ошибки. Это жесткие ошибки, определяемые языком. Вы не можете выбрать, какие части основного языка вы хотите придерживаться. Если это были специфические для поставщика расширения, тогда могут быть варианты их отключения, но это не так. Эти ошибки относятся к фундаментальным правилам языка C++.
Моя рекомендация состоит в том, чтобы скомпилировать этот код с истинным компилятором C99. Любая попытка скомпилировать его с MSVC 2008 (либо C, либо C++) приведет к разочарованию и боли.
Допустимо, что самая последняя версия MSVC будет лучше с этим кодом. В последних выпусках MSVC Microsoft улучшила поддержку C99 при компиляции как C. Эта поддержка для C99 не завершена, но может быть достаточно, чтобы правильно скомпилировать ваш код.