1

次のコード行があります。

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 に割り当てる必要があります。なぜそれが受け入れられないのか理解できません。

誰にもアイデアはありますか?

4

2 に答える 2