ひやりハット事件発生
mbed オンラインコンパイラーで通っていたものが、
ローカルのmdkでコンパイルしたところエラーが発生 and とかor とか使えないとエラーがでました。
私はPascal使いでありC使い
Pascalの論路演算子 and orを使います。
C の論路演算子 & |を使います。
このandと& or と| の間違いはコンパイラに基本お任せにしていました。
問題は
mbedのオンラインコンパイラーはand とorでエラーがでません。
検証
mbed オンラインコンパイラーで以下のコードを実行します。
uint8_t AndData1 = TestData1 and 0x01;
uint8_t AndData0 = TestData1 and 0x00;
uint8_t OrData1 = TestData0 or 0x01;
uint8_t OrData0 = TestData0 or 0x00;
PC.printf("And Data0: %2x \n\r",AndData0 );
PC.printf("And Data1: %2x \n\r",AndData1 );
PC.printf("Or Data0: %2x \n\r",OrData0 );
PC.printf("Or Data1: %2x \n\r",OrData1 );
TestData1 = 0xff;
TestData0 = 0x00;
AndData1 = TestData1 & 0x01;
AndData0 = TestData1 & 0x00;
OrData1 = TestData0 | 0x01;
OrData0 = TestData0 | 0x00;
PC.printf("And Data0: %2x \n\r",AndData0 );
PC.printf("And Data1: %2x \n\r",AndData1 );
PC.printf("Or Data0: %2x \n\r",OrData0 );
PC.printf("Or Data1: %2x \n\r",OrData1 );
結果は以下
And Data0: 0
And Data1: 1
Or Data0: 0
Or Data1: 1
And Data0: 0
And Data1: 1
Or Data0: 0
Or Data1: 1
結論
オンラインコンパイラ―はand と orが使える。
&をandと記述しても吐き出しは問題ない。
|をorと記述しても吐き出しは問題ない。
ってことで問題無し