2

背景:

我正在编写ATmega328。我受不了 Arduino IDE,所以我更喜欢使用Xcode来编写代码。但是,我发现使用 Xcode 将草图实际上传到 Arduino 的所有在线选项充其量都是令人费解的,并且在尝试实现它们方面没有成功。

当前方法:

目前对我有用的是严格使用 Xcode 作为调试器,并在我需要它们时“创建”精简版本的 Arduino 类,这样当我输入特定于 Arduino 的代码行时,调试器就不会崩溃。例如,我的 Xcode 项目中有一个 Serial 类,它具有以下功能,可以正常工作:

void Serial::print(int myInt)
{
    cout << myInt;
}

void Serial::println(int myInt)
{
    cout << myInt << endl;
}

我对字符串以及我可能需要打印的任何其他标准C++数据类型执行相同的操作。

这样,任何时候我想将Serial.print一个函数放入我正在处理的另一个类中,我都可以在 Xcode 中严格调试,而无需打开 Arduino IDE。我还可以为 等创建一个“假”类pinMode

问题:

我想byte用 Arduino 环境中使用的数据类型来做到这一点。我正在对这个程序采用面向对象的方法,它可能会耗尽我的小 Arduino 上宝贵的 RAM。所以,为了节省空间,我将我所有int的 s 转换为bytes 等等。

但是,我假设(并且我的编译器告诉我)我不能继承char, or int, 或任何其他基本类型。我不知道如何开始使用诸如“ byte a = 2”之类的语句或与我当前的(有些复杂的)解决方法类似的语句。

本质上,我想诱使 Xcode 认为所有意图和目的都是byte一样的int

有任何想法吗?

4

3 回答 3

3

您正在寻找typedef关键字:

typedef int byte;

但是int类型通常大于单个字节。你真正想要的是:

typedef unsigned char byte;
于 2013-01-17T22:58:55.770 回答
2

类型定义。(顺便说一句,你要愚弄的不是 Xcode,而是编译器。

typedef int byte;

或者

typedef uint8_t byte;
于 2013-01-17T22:59:42.683 回答
1

通过重用为 Mac 实现 Arduino 硬件抽象层的ncore ,您可能会节省很多精力。

即使您想手动执行此操作,也值得一看 ncore。它使用以下方式定义字节:

typedef uint8_t byte;

(事实上​​,这正是与 Arduino IDE 捆绑在一起的库的定义方式!)

于 2013-01-18T13:12:42.780 回答