【C言語学習ノート】typedefの運用

1440 ワード

参考記事:https://www.cnblogs.com/ktao/p/8578074.html
linuxカーネルではこのようなtypedef操作によく遭遇し、Cではdefineに似ていると思っていましたが、今は簡単だと思います.
4つの意味:
1.単純なマクロ置換だけでなく、タイプの別名を定義します.
typedef char *pStr1;  
define pStr2 char *;  
pStr1 s1, s2;  
pStr2 s3, s4; 

typedefは新しい変数を定義することに相当するが、defineは置換にすぎない.
2.structという最も一般的なものを省く.3.異なるアーキテクチャで異なるタイプの変数をサポートします.typedefの定義のみを変更して、異なるアーキテクチャの移植を実現することができます.そうですhにはこれらのものが見えます.4.複雑な変数の定義を実現する.複雑な宣言の新しい単純な別名を定義します.方法は、元の声明の中で複雑な声明の一部を別名で徐々に置き換えることで、変数名のある部分を最後に置き換えることで、元の声明の最も簡略化された版を得ることができます.例:
  • 原声明:int*(a[5])(int,char);変数名はaで、直接1つの新しい別名pFunでaを置き換えることができます:typedef int*(pFun)(int,char);元の声明の最も簡略化版:pFun a[5];
  • 原声明:void(b[10])(void());変数の名前はbで、まず右の部分の括弧の中のを交換して、pFunParamは別名の1:typedef void(*pFunParam)();さらに左の変数bを置き換え、pFunxは別名2:typedef void(*pFunx)(pFunParam);元の声明の最も簡略化版:pFunx b[10];
  • 原声明:doube(*)(*e)[9];変数名はeで、左の部分を置換し、pFunyは別名1:typedef double(*pFuny)();さらに右の変数eを置き換え、pFunParamyは別名2 typedef pFuny(*pFunParamy)[9];元の声明の最も簡略化版:pFunParamy;