最近typedef
、自分のコードが提案したものとは大きく異なることがわかりました。このような例:
typedef int *ptype;
ptype v1 = 0, v2 = 0;
結果: v1 と v2 の両方が型へのポインターとして定義されましたint
。しかし、単純に2 番目の文をptype
orに置き換えると、v1 だけがポインターになり、v2 が通常になります。単純な交換はしていないようです。さらに、次のような複雑な修飾子になると:int *
int *v1 = 0, v2 = 0;
int* v1 = 0, v2 =0;
int
typedef
typedef int *ptype;
const ptype v3 = 0;
結果は次のようになります: v3 はポインタであり、と書くと intconst
へのポインタではありません。上記のコードでは、内部ではなく、全体に対する修飾子として立っています。したがって、複合タイプを結合して新しいタイプを作成するように見えます。const
const int *v3 = 0;
const
ptype
int
ptype
typedef
int*
ただし、信頼できる C/C++ リファレンス Web サイトcplusplusは、「typedef は異なる型を作成しません。既存の型のシノニムを作成するだけです」と述べています。だから私は本当に混乱していて、誰かが の動作を説明するのを手伝ってくれることを願っていますtypedef
. ありがとう!