MPLAB X中的有效代码和编译器错误

问题描述 投票:2回答:1

我有主文件:

#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更改为:

struct modbus_frame {
    unsigned char data[MODBUS_FRAME_BUFFER_SIZE];
    unsigned char len; 
};

抛出不同的错误,这是没有意义的(未定义的符号_crc16())。

我的代码出了什么问题?

c c99 xc8
1个回答
1
投票

我找到了。

文件“modbus.h”和“modbus.c”在“文件”工具窗口中添加,如下所示:

enter image description here

但他们在项目结构中缺失:

enter image description here

并且MPLAB没有在make命令参数中考虑这些文件。

我没想到。

在项目结构中添加“modbus.h”和“modbus.c”(添加现有文件)后 - 事件按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.