【问题标题】:'uint32_t' identifier not found error'uint32_t' 标识符未找到错误
【发布时间】:2011-07-06 23:23:26
【问题描述】:

我正在将代码从 Linux C 移植到 Windows 的 Visual C++。

Visual C++ 不知道#include <stdint.h> 所以我把它注释掉了。

后来,我发现了很多 'uint32_t': identifier not found 错误。怎么解决?

【问题讨论】:

  • 您要注释掉哪些包括?
  • 还有,您使用的是哪个版本的 Visual C++? uint32_t 和其他精确宽度整数类型只是 C99 和 C++0x 的一部分,因此较旧的编译器(如 Visual C++ 2008 和更早版本)没有它们。
  • 很多!!! #include #include #include #include #include 谢谢!!!
  • 我正在使用 Visual C++ express 2008 。
  • @kevin:您不能只删除特定于平台的标头而忘记它们。您必须为新平台寻找替代品。这通常需要重写代码以使其可移植。

标签: c++ c visual-c++


【解决方案1】:

此类型在 C 标头 <stdint.h> 中定义,它是 C++11 标准的一部分,但在 C++03 中不是标准。根据the Wikipedia page on the header 的说法,它直到 VS2010 才随 Visual Studio 一起发布。

与此同时,您可以通过添加将Microsoft's custom integer types 映射到C 期望的类型的typedefs 来伪造您自己的标头版本。例如:

typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */

希望这会有所帮助!

【讨论】:

  • 你也可以使用 Boost 的 cstdint 实现。
  • 我将您的代码复制并粘贴到我的页面上。但它显示此错误“语法错误:缺少';'在标识符“int32_t”之前”和“缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int”。
  • 对不起,彼得,我是 C 新手。 Boost 的 cstdint 实现是什么?
  • Microsoft 的固定大小整数类型不以“t”结尾。试试__int32
  • u_int32_tuint32_t 不是同一类型; u 后面多了一个下划线。这似乎是一个单独的问题。
【解决方案2】:

您可以#include <cstdint>。自 2011 年以来,它就是 C++ 标准的一部分。

【讨论】:

  • 考虑到问题的限制,这应该是公认的答案,比如 C++ 和 VS2010。无需滚动您自己的 typedef。
【解决方案3】:

我有同样的错误,它修复了它,包括在以下文件中

#include <stdint.h>

在文件的开头。

【讨论】:

  • 正如问题中所指出的,stdint.h 不是 OP 正在使用的 C++ 编译器的一部分。这个答案没有解决这个问题。
【解决方案4】:

Boost.Config 为本身不提供这些类型定义的工具集提供这些类型定义。此特定功能的文档在这里:Standard Integer Types

【讨论】:

    【解决方案5】:

    msinttypes project page 提供了一个实现 - “该项目填补了 Microsoft Visual Studio 中 stdint.h 和 inttypes.h 的缺失”。

    我没有此实现的经验,但我在 SO 上看到过其他人推荐它。

    【讨论】:

    • 这是更好且最常用的实现。
    【解决方案6】:

    在 Windows 上,我通常使用 windows 类型。要使用它,您必须包含 &lt;Windows.h&gt;

    在这种情况下,uint32_t 是 UINT32 或只是 UINT。

    所有类型定义都在这里:http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx

    【讨论】:

      【解决方案7】:

      我必须在 VS2010 中运行项目,我无法在代码中引入任何修改。我的解决方案是安装 vS2013 并在 VS2010 中将 VC++ 目录 -> IncludeDirectories 安装到 Program Files(x86)\Microsoft Visual Studio 12.0\VC\include。然后我的项目编译没有任何问题。

      【讨论】:

        猜你喜欢
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多