我正在尝试使用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样式转换?
答案 0 :(得分:3)
无法禁用这些错误。这些是语言定义的硬错误。您无法选择要遵守的核心语言部分。如果这些是供应商特定的扩展,那么可能有选项来禁用它们,但事实并非如此。这些错误与C ++语言的基本规则有关。
我的建议是使用真正的C99编译器编译此代码。任何使用MSVC 2008(无论是C还是C ++)编译它的尝试都会导致失望和痛苦。
使用此代码可以更好地使用最新版本的MSVC。在最近的MSVC版本中,Microsoft有improved support for C99 when compiling as C。这种对C99的支持并不完整,但可能足以正确编译代码。