C-错误:(195)表达语法



我有一个代码库,该代码库同时编译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编译时不会被抛弃的备份。

编译器版本:

  • XC16-GCC V1.23
  • XC8 V1.33

所请求的其他信息周围的值:

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)导致了错误,并且不明智地添加空间并重新编译将其固化。

相关内容

  • 没有找到相关文章

最新更新