【发布时间】:2021-07-02 06:59:09
【问题描述】:
我正在研究一个示例应用程序,我发现了以下文字:
#define OFS_INIT {{(UINT16)0u},{(UINT16)~(UINT16)0u}}
void main( void )
{
LOCAL_STATIC(, RDS_UINT16, u16_msgOfs, OFS_INIT);
}
我没有LOCAL_STATIC 的定义,我想了解它如何与OFS_INIT 一起使用。
【问题讨论】:
-
你知道
~运算符是做什么的吗? -
除了
#define之外,这里没有特定的预处理器。它只是将OFS_INIT替换为右侧看起来像数组或struct初始化器的东西。 -
预处理器所做的就是用
{{(UINT16)0u},{(UINT16)~(UINT16)0u}}替换OFS_INIT。 -
您的代码在编辑后看起来无效。是真实的代码吗?
OFS_INIT仅作为初始化器才有意义。 -
它使用与
{{0}, {0}}相同的语法,只是有一堆强制转换和否定运算符。