工具/软件:TI C/C++编译器
考虑这个简短测试代码。 问题是这种有符号32位数字比较
if (<tempmin){ return total; }
不会生成任何汇编器代码、它始终跳至返回。 为什么?
#include
#include
#define short int16_t
#define long int32_t
#define USHORT uint16_t
short Temp_integral (short total、USHORT 值、USHORT 设定值、USHORT max);
/**
* main.c
*/
int main (void)
{
WDTCTL = WDTPW | WDTHOLD;//看门狗停止计时器
temp_integral (0、4096、410、32);
return 0;
}
#pragma FUNC_CANNOT_INLINE (Temp_Integral)
short Temp_integral (短整型总计、USHORT 值、USHORT 设定点、USHORT 最大值){
long volatile tempmin=-0x7FFE;
长挥发泡沫;
long volatile diff = 0;
/*
*负翻转检查
*
if (((long) value-setpoint)<tempmin){
退货总数;
}
DIFF=(长)值-(长)设定点;
foo=total+diff;
if (foo 最大值){
最大返回值;
}
返回总计+差异;
}