Цитата(k155la3 @ Jun 6 2018, 14:09)

Вынесите функцию из параметра.
Вместо функции "разверните" ее код в Inline.
функция имела следующий вид
Код
void data_calculation_AH64A(uint8_t flag)
{
switch (flag)
{
case MSG_04R04:
if(s1553_AH64A_Conv.TADS_Operate_CMD == 1)
{
d_RangeToTarget = round_int16(s1553_AH64A_Conv.Range_AID, 1.0);
}
else
{
d_RangeToTarget = 0;
}
d_PitchAngle = round_int16(s1553_AH64A_Conv.Pitch_AID, 0.1);
d_RollAngle = round_int16(s1553_AH64A_Conv.Roll_AID, 0.1);
b_RangeValidy = s1553_AH64A_Conv.TADS_Operate_CMD;
b_PitchAngleValidy = s1553_AH64A_Conv.Pitch_AID_Valid;
b_RollAngleValidy = s1553_AH64A_Conv.Roll_AID_Valid;
break;
//и так далее
}
для проверки изменил
Код
void data_calculation_AH64A(uint8_t flag)
{
double dval=0;
switch (flag)
{
case MSG_04R04:
if(s1553_AH64A_Conv.TADS_Operate_CMD == 1)
{
d_RangeToTarget = round_int16(dval, 1.0);
s1553_AH64A_Conv.Range_AID = dval;
}
else
{
d_RangeToTarget = 0;
}
d_PitchAngle = round_int16(s1553_AH64A_Conv.Pitch_AID, 0.1);
d_RollAngle = round_int16(s1553_AH64A_Conv.Roll_AID, 0.1);
b_RangeValidy = s1553_AH64A_Conv.TADS_Operate_CMD;
b_PitchAngleValidy = s1553_AH64A_Conv.Pitch_AID_Valid;
b_RollAngleValidy = s1553_AH64A_Conv.Roll_AID_Valid;
break;
на строчке double dval=0; вываливается в исключение.
Такое может быть из за неправильного линкер файла?