0

私はこの問題で数時間苦労しています:

char szKeyMap[MAX_ALPNUM_KEYS][CHAR_PER_KEY]= {"0- +%",  "1QZ.\\", "2ABC&",  "3DEF%",  "4GHI*",  "5JKL/", "6MNO~", "7PRS^", "8TUV[", "9WXY]",  "*,'\":", "#=:$?" };



getkbd_entry(h_clock,insertPin,pinBuff,0,NUMERIC ,szKeyMap,sizeof(szKeyMap), 6 , 4);

getkbd_entry プロトタイプは次のとおりです。

int getkbd_entry(int h_clock, char *msg, char *outbuf, unsigned wait,
unsigned type, char szKeyMap[][CHAR_PER_KEY],
int KeyMapSize, int va_alist, ...);

コンパイラで発生しているエラー:

"C:\Bin\test.c", line 90: Warning:  #167-D: argument of type "c
har *" is incompatible with parameter of type "signed char *"
  getkbd_entry(h_clock,insertPin,pinBuff,0,NUMERIC ,szKeyMap,sizeof(szK
eyMap), 6 , 4);

                                 ^
"C:\Bin\test.c", line 90: Error:  #167: argument of type "signe
d char (*)[6]" is incompatible with parameter of type "char *"
  getkbd_entry(h_clock,insertPin,pinBuff,0,NUMERIC ,szKeyMap,sizeof(szK
eyMap), 6 , 4);

どんな助けでも大歓迎です!

ありがとう

4

3 に答える 3

0

問題は明らかにこの方法で解決されました:

getkbd_entry(h_clock,insertPin,pinBuff,0,NUMERIC ,szKeyMap[6],sizeof(szKeyMap), 6 , 4);

マニュアルからの引用:

デフォルトでは、ACTライブラリでは、CHAR_PER_KEYは6として定義されています。したがって、アプリケーションは、キーマッピング配列のキーごとに5つの文字を持つことができます。

それは私にとって単なる当て推量でした、私はそれをほんとうに理解することができません。

于 2012-11-22T12:42:43.717 に答える
0

私はあなたのコードを取り、それをコンパイルするために簡単な数行を追加しました.gcc -Wallでうまくコンパイルされます. ただし、gcc -Wall は、「char」と「unsigned char」と「signed char」が一致しない場合に表示されるのと同じエラー メッセージを効果的に生成します。「char」は符号付きまたは符号なしのいずれかでなければならないため、これは少し直感に反するように思えますが、文字列の定義が符号付き、符号なし、または未指定に関連しているため、正確に一致することを再確認し、それが役立つかどうかを確認してください。

于 2012-11-22T01:24:38.413 に答える
0

たぶん、代わりszKeyMapchar**char*

于 2012-11-22T01:12:31.420 に答える