初始化程序无法确定错误的大小

时间:2018-03-13 00:25:17

标签: c++ variables arduino uint8t

我对编程有点新意,如何在message中存储变量?我正在尝试使用LoRa制作无线温度传感器,带有Arduino Uno + Dragino防护罩。结果将显示在物联网上。其他一切都很好。为什么我会收到下面写的错误? {temp}也不起作用。

CODE:

int temp = 25;

// Payload to send (uplink)

static uint8_t message[] = temp;

错误:

HelloWorld1:77: error: initializer fails to determine size of 'message'

   static uint8_t message[] = temp;
                  ^

HelloWorld1:77: error: array must be initialized with a brace-enclosed initializer

Multiple libraries were found for "lmic.h"
 Used: C:\Users\\Documents\Arduino\libraries\arduino-lmic-master
 Not used: C:\Program Files (x86)\Arduino\libraries\arduino-lmic-master
exit status 1
initializer fails to determine size of 'message'

1 个答案:

答案 0 :(得分:0)

编译时,必须知道数组的大小。它可以直接从[]中的值(例如uint8_t message [2])找到它,如果那里没有任何值,则从括号初始化器的长度,即逗号列表中找到它-{1}}中的分隔值,您可以在声明时分配给数组。

除此之外,你不能直接在uint8_t(1字节,无符号)中存储一个int值(2个字节,有符号)。因为(我想)你需要将数据作为uint8_t数组传输,你可以按如下方式进行:

{ }

int temp = 25;
// store temp in a uint8_t array with two elements (needed to store two bytes)
uint8_t message[2];
 message[0] = temp >> 8; // Most significant byte, MSB
 message[1] = temp; // Least significant byte, LSB

Theb传输int temp = 25; // store temp in a uint8_t array with two elements (needed to store two bytes) uint8_t message[2] = {(temp >> 8), temp}; message[0] = temp >> 8; // Most significant byte, MSB message[1] = temp; // Least significant byte, LSB ,并在接收器上将其“重新转换”为int:message