by Anonymous » 06 Feb 2025, 02:41
Ich habe einen Typedef < /p>
Code: Select all
typedef struct __attribute__((__packed__)) {
uint16_t firmware_version; // Minor, Major version
uint16_t buildcount;
char build_date[10];
char firmware_name[128];
} firmware_t;
< /code>
Ich habe versucht, eine Funktion zu definieren < /p>
void printFirmwareInfo(firmware_t *firmware, size_t len) { ...}
< /code>
, aber der Compiler wurde völlig verwirrt und glaubte, dass PrintiMWareInfo eine Variable oder ein Feld war und keine Firmware_t im Geltungsbereich sehen konnte. < /p>
error: variable or field 'printFirmwareInfo' declared void
void printFirmwareInfo(firmware_t *firmware, size_t len) {
error: 'firmware_t' was not declared in this scope
void printFirmwareInfo(firmware_t *firmware, size_t len) {
< /code>
Ich musste den Parameter als uint8_t * übergeben und ihn in die Funktion zurückgeben < /p>
void printFirmwareInfo(uint8_t *data, size_t len) {
firmware_t *firmware = (firmware_t *)data;
Serial.printf("Firmware Version: %u.%u\n", firmware->firmware_version >> 8, firmware->firmware_version & 0xFF);
Serial.printf("Build Count: %u\n", firmware->buildcount);
< /code>
Ist es ein Fehler oder wie es sein soll? />#include
#include
#include
#include
Die Typedefs befinden sich über den Funktionen
Ich habe einen Typedef < /p>
[code]typedef struct __attribute__((__packed__)) {
uint16_t firmware_version; // Minor, Major version
uint16_t buildcount;
char build_date[10];
char firmware_name[128];
} firmware_t;
< /code>
Ich habe versucht, eine Funktion zu definieren < /p>
void printFirmwareInfo(firmware_t *firmware, size_t len) { ...}
< /code>
, aber der Compiler wurde völlig verwirrt und glaubte, dass PrintiMWareInfo eine Variable oder ein Feld war und keine Firmware_t im Geltungsbereich sehen konnte. < /p>
error: variable or field 'printFirmwareInfo' declared void
void printFirmwareInfo(firmware_t *firmware, size_t len) {
error: 'firmware_t' was not declared in this scope
void printFirmwareInfo(firmware_t *firmware, size_t len) {
< /code>
Ich musste den Parameter als uint8_t * übergeben und ihn in die Funktion zurückgeben < /p>
void printFirmwareInfo(uint8_t *data, size_t len) {
firmware_t *firmware = (firmware_t *)data;
Serial.printf("Firmware Version: %u.%u\n", firmware->firmware_version >> 8, firmware->firmware_version & 0xFF);
Serial.printf("Build Count: %u\n", firmware->buildcount);
< /code>
Ist es ein Fehler oder wie es sein soll? />#include
#include
#include
#include
[/code]
Die Typedefs befinden sich über den Funktionen