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 であるのに、なぜこれらの警告が表示されるのですか?