我有主文件:
#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;
};
它抛出没有意义的不同错误( undefined symbol _crc16())。
我的代码有什么问题?
最佳答案
我找到了。
文件“modbus.h”和“modbus.c”已添加到"file"工具窗口中,如下所示:
但它们在项目结构中缺失:
并且 MPLAB 没有在make 命令参数中考虑这些文件。
没想到是这样
在我在项目结构中添加“modbus.h”和“modbus.c”(添加现有文件)后 - 事件按预期工作。
关于c - MPLAB X 中的有效代码和编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54696088/