c++ - 有没有办法在 VS2008 下禁用某些错误?

标签 c++ c visual-studio-2008

我正在尝试使用 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/

相关文章:

c++ - 如何从文件中读取多个表达式?

c - 使用多个线程分配内存时出现段错误

枚举可以被认为是不安全的吗?

c - C中循环缓冲区中的反向遍历

c - 访问冲突读取位置 0x000000xx - c 结构属性 - Visual Studio

jquery - Visual Studio 2008 Express 和 jQuery

c# - C#、C++ 和 C 的混合

c# - 在字符串到整数转换的情况下如何避免无效参数异常

java - 在 mbedtls Diffie-Hellman 中使用来自 Java 的 DER key

c++ - 表示函数依赖的数据结构