Допустимый код и ошибки компилятора в MPLAB X - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть основной файл:

#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 ()).

Что не так с моим кодом?

1 Ответ

0 голосов
/ 14 февраля 2019

Я нашел его.

Файлы "modbus.h" и "modbus.c" были добавлены в окно инструментов "Файлы", например:

enter image description here

но они отсутствовали в структуре проекта:

enter image description here

, и MPLAB не рассмотрел эти файлы в make параметры команды.

Я не ожидал этого.

После того, как я добавил «modbus.h» и «modbus.c» (добавить существующий файл) в структуру проекта - события работаюткак и ожидалось.

...