次のコード行があります。
uint32_t address = 0x40000000U;
au-misra2.lnt
これにより、構成ファイルを使用すると、次の 3 つの PC-Lint エラーが発生します。
"*** LINT: "D:\_SVN\LPC1788-32 Dev Kit\Bootloader--4\Loadware\source\led.c"(7, 35) Note 960: Violates MISRA 2004 Required Rule 10.1, Implicit conversion of integer to smaller type"
"*** LINT: "D:\_SVN\LPC1788-32 Dev Kit\Bootloader--4\Loadware\source\led.c"(7, 35) Info 712: Loss of precision (initialization) (unsigned long to unsigned int)"
"*** LINT: "D:\_SVN\LPC1788-32 Dev Kit\Bootloader--4\Loadware\source\led.c"(7, 35) Warning 569: Loss of information (initialization) (31 bits to 16 bits)"
変更:
uint32_t address = (uint32_t)0x40000000U;
0 の値が割り当てられます。
なぜこれが起こるのでしょうか?これは 32 ビット Cortex-M3 プロセッサ用であるため、これは unsigned int を unsigned int に割り当てる必要があります。なぜそれが受け入れられないのか理解できません。
誰にもアイデアはありますか?