gpt4 book ai didi

VS2013中的C99 stdint.h错误

转载 作者:太空狗 更新时间:2023-10-29 15:28:46 27 4
gpt4 key购买 nike

是否有任何理由导致下面的代码不起作用? (编译为 C 代码)

代码

#include <stdint.h>

int main()
{
int var = 10;
if (var == 0) return 1;
uint8_t data;
return 0;
}

错误信息

Error 3 error C2065: 'data' : undeclared identifier Error 2 error C2146: syntax error : missing ';' before identifier 'data' Error 1 error C2275: 'uint8_t' : illegal use of this type as an expression

这可能是 vs2013 中的错误吗?

要解决上述问题,可以执行以下任何操作:

  • 大括号中的 Return 语句将解决这个问题,即 if (var == 0) { return;
  • 在 if 语句之前删除 uint8_t 数据
  • 使用 unsigned char 而不是 uint8_t
  • 使用 C++ 编译“编译为 C++ 代码”(项目属性 -> C/C++ -> 高级 -> 编译为)

更新:vs2015(vs140)好像没有这个“bug”

最佳答案

Visual Studio C 编译器传统上在遵循后来的标准方面非常糟糕,甚至一度有人说它们根本不支持 C99(或更高版本)的 IIRC。这意味着 C 编译器仅支持 C89,它不允许您在任何地方放置变量声明,只能在 block 的开头。

所以你需要做

int var = 10;
uint8_t data; /* Moved declaration here */
if (var == 0) return;

应该注意的是,Microsoft 已经改变了他们对 C 和后来的 C 标准的立场,并且后来的版本和更新使编译器更符合当前(或至少是 C99)标准。

关于VS2013中的C99 stdint.h错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32823681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com