0

C++ から移行して、私は現在 C の闇の芸術を学んでおり、テンプレート化の必要性を置き換えるために次のコードを開発しました。下の例では、あらゆるデータ型を格納するために使用できるように、さまざまな Node 構造を実装しました。次のことを検討してください...

// vptr.c
#include <stdio.h>

struct Node
{  
    void* data;
    struct Node* next;
};

int main()
{  
    struct Node n0, n1;

    n0.next = &n1;
    n0.data = malloc(sizeof(int));

    *((int*) n0.data) = 3;

    printf("%d\n",  *((int*) n0.data));

    return 0;
}

繰り返しますが、問題はこのコードの無料コンパイルの警告にあります。つまり、gcc コンパイラを使用していますが、Windows 用の wxDevCpp でもいくつかの警告が表示されますが、それほど面倒ではありません。GUIのせいです。

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

4

2 に答える 2

2

私にとっては、 malloc( <stdlib.h>) に正しいインクルードを追加するだけで、コードのコンパイル時に警告が表示されなくなります: gcc -std=c89 -Wall -Wextra -pedantic.

于 2010-10-12T13:11:45.743 に答える
2

malloc含めなかったstdlib.hで宣言されています。したがって、を追加する#includeと、警告は消えます。

もう 1 つの警告は//、C89 では有効なコメントではないということです。その警告を/* */消すには、コメントを使用するか、gcc に C99 を使用するように指示します。

于 2010-10-12T13:12:05.430 に答える