関数uint32_packを呼び出す次のコードがあります。このプログラムはDev-C++でエラーなくコンパイルされますが、 'tag'が偶数の場合は正しい結果が得られません。 Visual Studioでは、プログラムはコンパイルされますが、エラーが発生します。私は、これらのエラーが「タグ」が偶数の場合に正しい出力を得ない理由を推測しています。私はまだポインタの周りに私の頭を取得しようとしていると私はそれらを宣言するときに間違っていたかわからない。ご協力いただきありがとうございます。ポインタを正しく初期化する方法
1 int uint32_pack (uint8_t *fieldnumber, uint32_t value, uint8_t *out);
2 int main(){
3 uint32_t initvalue = 2;
4 int return_rv;
5 uint8_t *tag = (uint8_t *) malloc(sizeof(uint8_t));
6 *tag = 38;
7 uint8_t *tempout= (uint8_t *) malloc(30);
8 return_rv = uint32_pack (tag, initvalue, tempout);
9 free(tempout);
10 free(tag);
11 }
そして、VSからの誤差があるが、以下のように:
error C2143: syntax error : missing ';' before 'type' (on line 7)
error C2065: 'tempout' : undeclared identifier (on line 8)
warning C4047: 'function' : 'unsigned char *' differs in levels of indirection from 'int' (on line 8)
warning C4024: 'uint32_pack' : different types for formal and actual parameter 3 (on line 8)
error C2065: 'tempout' : undeclared identifier (on line 9)
warning C4022: 'free' : pointer mismatch for actual parameter 1 (on line 9)
Cコードとしてコンパイルされている可能性があります.MSVCはC99をサポートしていないため、宣言とコードを混在させることはできません。それをC++コード(.cppの名前を変更するか、IIRC '/ Tp'フラグを使用)としてコンパイルし、それが修正されているかどうか確認してください。 uint32_pack関数のヘルプが必要な場合は、質問に含める必要があります。 – user786653
あなたが正しいかのように見えます。なぜそれを答えとして投稿しないのですか? –
@negeoそしてあなたがそれをしている間、なぜ、なぜ、あなたは1バイトのmallocですか? –