【问题标题】:Do I have to include stdint in an AVR C++ project?我必须在 AVR C++ 项目中包含 stdint 吗?
【发布时间】:2025-12-15 17:55:02
【问题描述】:

我正在 Atmel Studio 7 中处理 C++ 项目。我是否必须在我的头文件/C++ 文件中包含 stdbool.hstdint.h 或类似的 AVR-GCC 库? bool 是 C++ 中的一个关键字,但我不知道它是否适用于微控制器项目,因为并非所有 C++ 功能都受支持。 uint8_t 也不是关键字,它是 typedef。但是,如果我不包括它们,该项目就可以正常运行。 uint8_t 可以在stdint-gcc.h 中使用,它似乎默认包含在项目中。我还应该将#include <stdbool.h>#include <stdint.h> 放入需要使用它们的文件中吗?

【问题讨论】:

    标签: c++ avr-gcc atmelstudio


    【解决方案1】:

    不,如果您能够在没有它们的情况下进行编译,则不需要包含它们。如果将来您决定不使用 Atmel Studio,它可能有助于提高可移植性。再一次,根据我的经验,如果您离开 Atmel Studio,无论如何都会遇到许多其他可移植性问题,特别是如果您使用任何专有库,例如 QTouch。让微控制器的东西真正便携通常是一项徒劳的任务。

    【讨论】:

    • 其实你的回答是错误的。 uint8_t 之所以可用,只是因为我在该项目的文件中包含了avr/io.h。没有它,我必须包含stdint.h,否则.cpp 文件将无法编译。 “默认”是指它被添加到每个文件中,即使其中一些文件不包含单个 #include。这与其他标头包含 stdint.h 时不同。
    • @Klenium 我的错误,我的意思是如果 Atmel Studio 不需要它,那么你就不需要包含它,因为微控制器代码无论如何都不会是可移植的。
    • 我不打算更改我的 IDE,因为除了 Atmel Studio 之外我一无所知。 :-) 无论如何,谢谢,我知道我需要什么。我会把这个留给其他人。
    最近更新 更多