Error: (195) expression syntax

Error: (195) expression syntax

我有一个为 PIC18 和 PIC24 编译的代码库。

在为PIC24上的新传感器编写驱动程序时,我为PIC18重新编译,压力计算失败:

{
    // Normal operation, valid data
    uint32_t rawPressure = ((ssc_sr_1[0] & 0x3F) << 8) + ssc_sr_2[0];
    filter_pressure_left = (uint16_t)(MIN_PRESSURE_PA + (rawPressure - MIN_PRESSURE_RAW)*(MAX_PRESSURE_PA-MIN_PRESSURE_PA)/(MAX_PRESSURE_RAW-MIN_PRESSURE_RAW));
}

编译时,抛出错误 i2c.c:546: error: (195) expression syntax(第 546 行是 filter_pressure_left = 行)。

我看不出在语法上有什么错误可以抛出这个错误,这是由它在使用 xc16-gcc 编译时没有被抛出来支持的。

编译器版本:

请求的附加信息周围使用的值:

DECLARE unsigned char ssc_sr_1[2];
DECLARE unsigned char ssc_sr_2[2];
#define MAX_PRESSURE_PA                 249
#define MIN_PRESSURE_PA                 -249
#define MAX_PRESSURE_RAW                14745   // 90% of 2^14
#define MIN_PRESSURE_RAW                1638    // 10% of 2^14

空格空格空格!

将第二行更改为:

filter_pressure_left = (uint16_t)(MIN_PRESSURE_PA + (rawPressure - MIN_PRESSURE_RAW) * (MAX_PRESSURE_PA - MIN_PRESSURE_PA) / (MAX_PRESSURE_RAW - MIN_PRESSURE_RAW));

编译没有错误。

供将来遇到此问题的人参考 - 将您的等式拆分为多行以准确确定哪部分失败了 - 在我的情况下 (MAX_PRESSURE_PA-MIN_PRESSURE_PA) 导致了错误并心不在焉地添加空格并重新 -编译治愈它。