【发布时间】:2013-10-02 10:22:21
【问题描述】:
我正在编程Arduino,我想使用#define 语句来设置要传递给Ethernet.begin() 函数的字节数组。此时我正在使用以下代码,一切都按预期工作:
#define MAC_ARRAY { 0x43, 0xA3, 0xDA, 0x0D, 0xF5, 0xA5 }
void setup() {
byte mac[] = MAC_ARRAY;
if (Ethernet.begin(mac) == 0) {
...
}
}
正如您在上面的代码中看到的,每次我使用MAC_ARRAY 值时,我都必须在整个源代码中声明byte mac[] = MAC_ARRAY;。但是我想避免说明(我还认为“在漫长的道路上”可能存在内存问题,因为 mac[] 变量已实例化)并且以某种方式将正确的 MAC_ARRAY 直接传递给 Ethernet.begin() 函数。
有可能吗?如果是这样,我应该如何更改#define MAC_ARRAY ... 语句?
【问题讨论】:
-
不,不可能将“文字”数组传递给函数,除非你有一个 C++11 兼容的编译器/标准库,并且函数本身是使用
std::initializer_list类编码的。 -
你的代码已经简单正确了,没必要乱来