9

Cでtypedefをいつ使用するか教えてもらえますか? 次のコードでは、次のように警告が表示されgccます。

warning: useless storage class specifier in empty declaration

typedef struct node
{
  int data;
  struct node* forwardLink;
} ;
4

6 に答える 6

12

の構文typedeftypedef <type> <name>;です。を介してタイプにアクセスできるようにしnameます。この場合、指定したのは。のみであり、指定してtypeいないnameため、コンパイラは文句を言います。

あなたはおそらくしたい

typedef struct node
{
  int data;
  struct node* forwardLink;
} node;
于 2012-10-15T16:47:08.013 に答える
10

それで..

あなたはこれを行うことができます:

struct node {
  int data;
  struct node* forwardLink;
};

として使用できるオブジェクトを定義しますstruct node

このような:

struct node x;

ただし、それを単にとして参照したいとしますnode。次に、次のことができます。

struct node {
  int data;
  struct node* forwardLink;
};

typedef struct node node;

また

 typedef struct {
  int data;
  void* forwardLink;
} node;

そしてそれを次のように使用します:

node x;
于 2012-10-15T16:48:23.477 に答える
2

構造など、型に別の名前を使用する場合に使用typedefします。

あなたの場合、struct node変数を宣言するために使用する代わりに、代わりにNode、のエイリアスとして単に使用することができますstruct node

しかし、宣言にエイリアスがありません。

typedef struct node
{
  int data;
  struct node* forwardLink;
} Node;

これは同じことを達成しますが、エラーの原因をより明確にする可能性があります。

struct node
{
  int data;
  struct node* forwardLink;
};

// this is equivalent to the above typedef:
typedef struct node Node;
于 2012-10-15T16:47:44.407 に答える
1

Typedef は、ユーザー データ型を定義するために使用されます。例えば

typedef int integer;

int の代わりに、integer を使用して int データ型を定義できるようになりました。

integer a;// a would be declared as int only
于 2012-10-15T16:54:10.053 に答える
1
typedef struct node
{
    int data;
    struct node* forwardLink;
} MyNode;

書きたい場合は

MyNode * p;

それ以外の

struct node *p;

構造体の内部には、まだ構造体ノード * forwardLink; が必要です。

于 2012-10-15T16:49:24.203 に答える
0

いくつかの変数の可能な値のリストである定数の場合:

typedef enum {BLACK=0, WHITE, RED, YELLOW, BLUE} TColor;

一般に、コンパイラは特に暗黙のキャストについて警告するため、物事を正しく操作しているかどうかを知るのに役立ちます。コードを読みやすくするだけではありません。

于 2012-10-15T20:26:23.257 に答える