2

我正在使用 Keil uVision4 在 STM32F2 设备上进行开发。我正在尝试使用 C++,这应该可以使用 uVision 工具链提供的 armcc(如果我错了,请纠正我)。但是uVision拒绝接受标准的C++包含方式

    #include <cstdint>

不工作,而

    #include <stdint.h>

完美运行。当我在 uVision(右键单击,打开文档)中打开 cstdint 时,它会打开文件,但是作为通用文件,例如不是作为头文件,没有花哨的颜色。

我错过了什么?这两个文件都在同一个文件夹 C:\Keil\ARM\ARMCC\include 中,我是否强制编译器使用 c++(通过附加 --cpp)没有任何区别。uVision 只是无法接受没有结尾的文件作为头文件吗?

编辑:响应答案(感谢您的宝贵时间!):错误消息将是:

    #include <cstdint> and
    #include <cstdint.h>
    typedef uint32_t u32;
    error: #20: identifier uint32_t is undefined

尽管

    #include <stdint.h> and
    #include <stdint>
    typedef uint32_t u32;
    and 
    #include <cstdint> 
    typedef std::uint32_t u32;
    works perfectly.

这表明了问题所在。谢谢您的帮助!

4

1 回答 1

1

你有什么症状不工作?即错误信息是什么?可能您只需要一个using namespace std, 或在所有类型前面加上 std:: 前缀,因为cstdint标头将其声明放在std命名空间中。

但是请注意,这cstdint是一个非常新的头文件,您的编译器可能不支持。所以你可能不得不接受stdint.h,这同样好。

于 2012-10-29T18:03:34.647 回答