組み込みシステム クラスのデバイス ハンドラを作成しており、マクロを使用して i 番目のビットが設定されているかどうかを確認しようとしています。マクロが正しく動作していないように見えますが、インライン関数は動作します。何故ですか?
#define TEST0 i&0x01
#define CLEAR0 i &= 0x01
inline short test0(short i) {
return i&0x01;
}
int main() {
short flag = 1;
//this doesnt work
if (TEST0(flag) == 0x01) {
CLEAR0(flag);
}
//but this does
if (test0(flag) == 0x01) {
CLEAR0(flag);
}
return 0;
}