我有一个代码库,可以编译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
答案 0 :(得分:2)
空间空间!
将第二行更改为:
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)
导致错误并且心不在焉地添加空格并重新编译治愈它