我正在尝试使用 VS2008 编译大量遗留 C (C99) 代码。为了解决 VS2008 编译器不支持的 C99 代码的一些问题,我切换到 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 有 improved support for C99 when compiling as C .这种对 C99 的支持并不完整,但可能足以正确编译您的代码。
关于c++ - 有没有办法在 VS2008 下禁用某些错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23104646/