首页 新闻 会员 周边

C编译 三目运算问题

0
悬赏园豆:5 [已解决问题] 解决于 2021-11-27 15:19

三元运算下的执行语句使用NULL空指针的报错

问题补充:

在串口的接收中断中
三目运算:判断后执行1:校验数据帧,然后发送一字节的数据;或者执行2:NULL NULL的宏定义为:#define NULL ((void *) 0)

但是会出现一个报错如图。

X^mao^的主页 X^mao^ | 初学一级 | 园豆:197
提问于:2021-11-09 17:20
< >
分享
最佳答案
0

具体代码不给,空说没用。你使用空指针,也不说咋用的。

收获园豆:5
寂静的羽夏 | 小虾三级 |园豆:1781 | 2021-11-09 19:08

@Xmao:
回答问题:这个是警告,应该没啥关系,警告提示可能会触发的错误,如果不是你写的,就无视吧。从你的代码和窗体来看你应该使用的是keil进行单片机编程,抱歉我对这方面的认知比较少无法回答,虽然我也学过。我的见识短浅,没见过这样用3目运算符的。我拿到VS看看可不可以用,长见识了。但是发现这样写其实没啥意义,就是占个空子,感觉不如if直观。

不知道这个是不是你点的反对。如果不是的话就无视后面的:题目没说明白,说了句实话,心里就不爽了,哪有这样对待想要帮助他人的人的?

寂静的羽夏 | 园豆:1781 (小虾三级) | 2021-11-09 22:06

@寂静的羽夏: 不知道谁 -1 ,我帮你加回来了 :)

〆灬丶 | 园豆:2287 (老鸟四级) | 2021-11-10 09:21

@韆: 感谢老哥支持。

寂静的羽夏 | 园豆:1781 (小虾三级) | 2021-11-10 09:27
其他回答(1)
-1

能否先把完整代码给一下

计算机知识杂谈 | 园豆:470 (菜鸟二级) | 2021-11-09 20:44

(Rs422_SendFlag)?(Rs422_SendFlag=0,Rs422_CalData(Rs422SendData),Uasrt_SendByte(Rs422SendData[0])):(NULL);//校验+发送一个数据

支持(0) 反对(0) X^mao^ | 园豆:197 (初学一级) | 2021-11-09 20:46

/* 串口0中断服务子程序 */
void UART0_ISR() interrupt 17
{
unsigned char temp;
static unsigned char i;

UART_INT_FLAG_CLR;//清除UART0中断标志
if ((UART_STATE & UART_RI))
{
		temp = UART_BUF;
		UART_STATE &= ~UART_RI;//清除接收中断标志位
	
		Rs422RecData[Rs422_RecAddr]	= temp;
		if(Rs422_RecAddr<=3)
			Rs422_CheckHead();
		else
			Rs422_RecAddr++;

		if(Rs422_RecAddr==16)
		{
			Rs422_RecAddr=0;	
			Rs422_RecFlag=1;	//接收完成
			Rs422_CheckData();	//检查
			(Rs422_SendFlag)?(Rs422_SendFlag=0,Rs422_CalData(Rs422SendData),Uasrt_SendByte(Rs422SendData[0])):(NULL);//校验+发送一个数据
		}
}
	if((UART_STATE & UART_TI))
	{
		UART_STATE &= ~UART_TI;//清除发送中断标志位
		
		/*task*/
		Rs422_RecAddr=0;	
		Printf_CpltFlag=1;
		(i<=15)?(Uasrt_SendByte(Rs422SendData[i]),i++):(i=1);
	}

}

支持(0) 反对(0) X^mao^ | 园豆:197 (初学一级) | 2021-11-09 20:46

@Xmao: 我的答案给你了。防止你看不到就特地at了你一下。

支持(0) 反对(0) 寂静的羽夏 | 园豆:1781 (小虾三级) | 2021-11-09 22:09

@寂静的羽夏: 对于代码的优化和阅读上更简洁,使用太多的if else 会导致代码行数过多显得臃肿

支持(0) 反对(0) X^mao^ | 园豆:197 (初学一级) | 2021-11-10 11:00

@Xmao: 毕竟是权衡问题,不过三目运算符里含有多个表达式代码读起来就恶心。

支持(0) 反对(0) 寂静的羽夏 | 园豆:1781 (小虾三级) | 2021-11-10 11:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册