structのtypedef, CとC++での違い


このエントリーをはてなブックマークに追加

もしかしたら長らく勘違いしていたかもしれないこと。


Cの場合

Cでは構造体を定義するのに以下のように書く。

struct data_t {
    int num1;
    int num2
};

この構造体の変数を宣言するときには以下のように書く。

struct data_t d;

でも毎回struct data_tって書くのはめんどくさいってことで、typedefを使うことが多い。

struct _data_t {
    int num1;
    int num2
} data_t;

こうすると、構造体の変数の宣言が簡単に書けるようになる。

data_t d;

C++の場合

C++ではCと違い、わざわざtypedefしなくてもよくなった。

struct data_t {
    int num1;
    int num2
};

と構造体を定義すると、以下のように構造体の変数を宣言できる。

data_t d;

Cっぽくstructをつけて宣言することもできるけど、特にそうする意味はない(はず)。

struct data_t d2;