2

PIC18F2420 用の xc8 1.35 コンパイラで MPLABX 3.20 を使用していますが、理解できない 2 つの奇妙な警告が表示されます。

警告を生成するソース コードの 1 つを次に示します。

9  void write(Pin _Pin, char value)
10  {
11     if( value == 1)
12     {
13         (*((_Pin.Reg)+ 5*sizeof(char))) |=(1<<_Pin.Bit);
14     }
15     else
16     {
17         (*((_Pin.Reg)+ 5*sizeof(char))) &= ~(1<<_Pin.Bit);
18     }
19 }

これが私が使用するStruct Pinです:

typedef unsigned char *SFR;

typedef struct 
{
    SFR Reg;
    unsigned char Bit;
    SFR ReadReg;

}Pin;

このコードは、ピンを使用する簡単な方法を提供するために使用されます

次の警告があります。

Pin.c:13: 警告: (373) 符号付きから符号なしへの暗黙的な変換

Pin.c:17: 警告: (373) 符号付きから符号なしへの暗黙的な変換

...

Pin.c:17: 警告: (752) 短いデータ型への変換

両方の値が unsigned char であるのに、なぜこれらの警告が表示されるのですか?

4

1 に答える 1