У меня есть основной файл:
#include "modbus.h"
void main(void)
{
modbus_frame_t frame;
// (...)
// ERROR ON LINE BELOW
// main.c:59:: error: (712) can't generate code for this expression
crc16(frame, 1);
}
Это файл "modbus.h":
#ifndef MODBUS_H
#define MODBUS_H
#define MODBUS_FRAME_BUFFER_SIZE 74
struct modbus_frame {
unsigned char * data[MODBUS_FRAME_BUFFER_SIZE];
unsigned char * len;
};
typedef struct modbus_frame modbus_frame_t;
char crc16(modbus_frame_t f, char check);
#endif
А это файл "modbus.c":
#include "modbus.h"
char crc16(modbus_frame_t f, char check) {
// (...)
}
Компилятор MPLAB XC8 2.05 сообщает:
main.c: 59 :: error: (712) не может сгенерировать код для этого выражения
Когда я изменяю структуру на:
struct modbus_frame {
unsigned char data[MODBUS_FRAME_BUFFER_SIZE];
unsigned char len;
};
выдает различную ошибку, которая не имеет смысла (неопределенный символ _crc16 ()).
Что не так с моим кодом?