BOOL MACIsTxReady(void)
{
return !ReadETHReg(ECON1).ECON1bits.TXRTS;
}
这是ReadETHReg(ECON1)
一个函数,然后是它后面的东西是什么?
请原谅我糟糕的英语。
答案 0 :(得分:2)
将其视为此
xx = ReadETHReg(ECON1);
yy = xx.ECON1bits;
zz = !yy.TXRTS;
您需要探索ReadETHReg的定义以找出它返回的内容(可能是结构)
或者它可能是一个宏
答案 1 :(得分:0)
由于运营商优先权,
return !ReadETHReg(ECON1).ECON1bits.TXRTS;
相当于:
return !(ReadETHReg(ECON1).ECON1bits.TXRTS);
ReadETHReg(ECON1)
似乎会返回一个struct
,其成员ECON1bits
,而struct
成员TXRTS
。
答案 2 :(得分:0)
这个ReadETHReg(ECON1)
是一个返回结构的函数。这个.ECON1bits.TXRTS
正在访问返回的第一个结构内的另一个结构内的值。
就像在这段代码中一样:
#include <stdbool.h>
typedef bool BOOL;
int ECON1 = 42;
struct S {
struct {
bool TXRTS;
} ECON1bits;
};
struct S ReadETHReg(int val)
{
struct S ret;
ret.ECON1bits.TXRTS = val > 40 && val < 50;
return ret;
}
BOOL MACIsTxReady(void)
{
return !ReadETHReg(ECON1).ECON1bits.TXRTS;
}