私が64ビットに移植しようとしているCソースコードは、32ビット環境では警告なしに実行されます。コンパイルgcc(Ubuntu 4.4.1-4ubuntu9)4.4.1を使用して64ビットLinux環境でコンパイルすると、主に次の警告が表示されます。
warning: cast to pointer from integer of different size
上記の警告が最も多かった。uintptr_tタイプを使用しましたが、これらの警告のほとんどが削除されました。uintptr_tを使用して、型int /unsignedint を64ビットに変更できます。しかし、64ビットと互換性を持たせるために次のタイプを変更するにはどうすればよいですか?
typedef void* POINTER;
次のコードを変更しました。
typedef unsigned int ABC;
の中へ
typedef uintptr_t ABC
次の警告が表示されました。
warning: passing argument 2 of ‘function’ from incompatible pointer type
note: expected ‘ABC *’ but argument is of type ‘unsigned int *’
さらに、タイプdefを以前はintまたはunsigned intであったuintptr_tに変更した後、次のようなほとんどの警告が発生します。
warning: inlining failed in call to ‘abc_StringCopy’: call is unlikely and code size would grow
関数tptp_StringCopyは次のとおりです。
static __inline__ char* abc_StringCopy(void)
{
char *copy;
copy = (char*)Malloc(yyleng+1);
strcpy(copy, yytext);
return copy;
これらの警告を取り除くにはどうすればよいですか?