Intereting Posts
Рекомендуется ли использовать метод вычисления размера файла с помощью fseek ()? Получить результат другого процесса с использованием системной функции без использования файлов C пример транзакции для mysql Увеличение по сравнению с точками последовательности имеет значение NULL / false в C и C ++ больше, чем 0x0 / 0b0 / ‘\ 0’ / 0 Используя сборку C / Intel, какой самый быстрый способ проверить, содержит ли 128-байтовый блок памяти все нули? module_init не показывает printk, что я хочу, чтобы он Как я могу получить удобочитаемое описание из номера сигнала? Устранение погрешности по модулю: как это достигается в функции arc4random_uniform ()? Как читать строку из файла? Чтение кода API Zend Engine: что означает ## (двойной хеш)? Начало программы C Что это делает? Разница между const char * p и char const * p Не удалось загрузить файл или сборку Ошибка Microsoft.Data.OData Версия = 5.2.0.0 в роли рабочего агента Azure с использованием хранилища таблиц

Ошибка компиляции при создании пакета

Я изучаю этот учебник для tinyos, и я хотел попробовать его. Я пытаюсь создать пакет, но он дает мне следующую ошибку. Я не знаю, что случилось. Это, наверное, что-то простое, но я не могу понять, что это такое.

#include "TestMsg.h" ... event void AMControl.startDone(error_t error) { if (error == SUCCESS) { call Leds.led0On(); //create packet TestMsg_t* msg = call Packet.getPayload(&packet, sizeof(TestMsg_t)); msg->NodeID = TOS_NODE_ID; // // //TODO in the meantime this can change // button_state_t val = call Get.get(); // msg->Data = ( val == BUTTON_PRESSED ? 1 : 0 ); // // //send packet // if (call AMSend.send(AM_BROADCAST_ADDR, &packet, sizeof(TestMsg_t)) == SUCCESS) { // radioBusy = TRUE; // } } else { call AMControl.start(); } } ... 

Вот TestMsg.h

 #ifndef TEST_MSG_H #define TEST_MSG_H typedef nx_struct _TestMsg { nx_uint16_t NodeID; nx_uint8_t Data; } TestMsg_t; enum { AM_RADIO = 6 }; #endif /* TEST_MSG_H */ 

Вот та часть, где она объявлена ​​в видео

Ошибка, я получаю это:

 In file included from /home/advanticsys/ws/TestRadio/src/TestRadioAppC.nc:5: In component `TestRadioC': /home/advanticsys/ws/TestRadio/src/TestRadioC.nc: In function `AMControl.startDone': /home/advanticsys/ws/TestRadio/src/TestRadioC.nc:43: syntax error before `*' /home/advanticsys/ws/TestRadio/src/TestRadioC.nc:44: `msg' undeclared (first use in this function) /home/advanticsys/ws/TestRadio/src/TestRadioC.nc:44: (Each undeclared identifier is reported only once /home/advanticsys/ws/TestRadio/src/TestRadioC.nc:44: for each function it appears in.) 

Обновить

Что-то не так с структурами и заголовками.

 #include "Szar.h" #include "BarType.h" module SzarP { uses interface Boot; uses interface Leds; } implementation { event void Boot.booted() { // TODO Auto-generated method stub call Leds.led0On(); Szar_t foo; Szar_t *szar = &foo; BarType_t barVar; barVar.data = 0; BarType_t *pBarVar = &barVar; pBarVar->data = 1; } } 

Вот два файла заголовка.

 #ifndef SZAR_H #define SZAR_H typedef nx_struct _Szar { nx_uint8_t szar1; nx_uint16_t szar2; } Szar_t; #endif /* SZAR_H */ #ifndef BAR_TYPE_H #define BAR_TYPE_H typedef struct _BarType { uint8_t id; uint32_t data; } BarType_t; #endif /* BAR_TYPE_H */ 

И ошибки:

 In file included from /home/advanticsys/ws/Szar/src/SzarAppC.nc:6: In component `SzarP': /home/advanticsys/ws/Szar/src/SzarP.nc: In function `Boot.booted': /home/advanticsys/ws/Szar/src/SzarP.nc:15: syntax error before `foo' /home/advanticsys/ws/Szar/src/SzarP.nc:19: `barVar' undeclared (first use in this function) /home/advanticsys/ws/Szar/src/SzarP.nc:19: (Each undeclared identifier is reported only once /home/advanticsys/ws/Szar/src/SzarP.nc:19: for each function it appears in.) /home/advanticsys/ws/Szar/src/SzarP.nc:20: syntax error before `*' /home/advanticsys/ws/Szar/src/SzarP.nc:21: `pBarVar' undeclared (first use in this function) 

    По какой-то странной причине я должен объявить КАЖДУЮ переменную вне функции, а затем она работает. Пример:

     bool radioBusy = FALSE; message_t packet; TestMsg_t *messageToSend; button_state_t buttonState; event void AMControl.startDone(error_t error) { if (error == SUCCESS) { call Leds.led0On(); messageToSend = call Packet.getPayload(&packet, sizeof(TestMsg_t)); messageToSend->NodeID = TOS_NODE_ID; //TODO in the meantime this can change buttonState = call Get.get(); messageToSend->Data = ( buttonState == BUTTON_PRESSED ? 1 : 0 ); //send packet if (call AMSend.send(AM_BROADCAST_ADDR, &packet, sizeof(TestMsg_t)) == SUCCESS) { radioBusy = TRUE; } } else { call AMControl.start(); } } 

    Он также работает, если я объявляю свои переменные в начале функций / событий / команд без какого-либо кода перед ними.