博文一
转载自:https://www.sohu.com/a/366877346_298038
为什么一般来说#define后面没有分号?
所谓#define语句后面一般没有分号的原因在于,将要替换的字符串还原之后,导致还原位置的语句出现问题,因此才使得后面不能有分号。
也就是说,如果替换之后,语法正常,其实是可以的(注意空格问题)。
//来源:公众号【编程珠玑】
# include<stdio.h>
# defineNUM 1024;
intmain( void)
{
inta = NUM;
printf( "%dn",a);
return0;
}
我在#define语句的后面加了个分号,替换到原处之后,语句变成了:
inta = 1024;;
显然这并不会有语法问题,只是显得非常累赘;并且这也只是碰巧不会有问题。
博文二
转载摘抄自:https://blog.csdn.net/ace_wty/article/details/109657344
#define NRF_BLE_SCAN_DEF(_name) \
static nrf_ble_scan_t _name; \
NRF_SDH_BLE_OBSERVER(_name ## _ble_obs, \
NRF_BLE_SCAN_OBSERVER_PRIO, \
nrf_ble_scan_on_ble_evt, &_name) \
使用的是拼接符 \ 拼接成一行。作用是以免语句过长,看见到博主那篇文章我认为其实这里是可以拆分成两个程序句的。
就是static nrf_ble_scan_t _name;和 NRF_SDH_BLE_OBSERVER(_name ## _ble_obs, NRF_BLE_SCAN_OBSERVER_PRIO, nrf_ble_scan_on_ble_evt, &_name)
让人难理解的是中间static nrf_ble_scan_t _name;
其实这个就是的定义一个 nrf_ble_scan_t类型的变量_name没别的,这个理解了其他的就好理解了,其他都都可以进行替换就完事了。
版权声明:本文摘抄自互联网各个其他人的原创文章,非本人原创文章,如有侵权请及时联系删除,转载请先咨询原文博主,并请附上原文出处链接和本声明。