C/C++中typedef的用法大全
一、為基本數(shù)據(jù)類型起別名
typedef int myint; myint x = 5;
"myint"是"int"的別名,可以使用"myint"來代替"int"聲明變量,這個很好理解,但是也很少有人這么用吧。
二、為結構體起別名
這個在學C語言時就知道了:
typedef struct {
int x;
int y;
} Point;
Point p = { 3, 4 };
三、為指針類型起別名
在這個例子中,"intptr"是指向"int"類型的指針的別名,可以使用"intptr"來聲明指針變量。為防止代碼閱讀者有障礙,慎用吧。
typedef int* intptr; intptr p = new int; *p = 5;
四、為函數(shù)指針類型起別名
在這個例子中,"func_ptr"是指向函數(shù)的指針類型的別名,可以使用"func_ptr"來聲明函數(shù)指針變量。
typedef int (*func_ptr)(int, int);
int add(int a, int b) { return a + b; }
func_ptr f = add;
int result = (*f)(3, 4);
這個在DLL導出用到的比較多,如:
typedef MyInterface* (*CreateMyObjectFunc)();
在這個例子中,typedef 聲明了一個名為 CreateMyObjectFunc 的新類型。CreateMyObjectFunc 是一個函數(shù)指針類型,它指向一個返回值為 MyInterface* 類型的函數(shù),該函數(shù)沒有參數(shù)。
這種函數(shù)指針類型的定義通常用于動態(tài)加載庫文件中的函數(shù)。通過這種方式,可以定義一個函數(shù)指針類型來代表動態(tài)加載的庫文件中的函數(shù),并將其作為參數(shù)傳遞給動態(tài)加載函數(shù)。然后可以使用該函數(shù)指針類型調用動態(tài)加載函數(shù)中的函數(shù)。在這種情況下,CreateMyObjectFunc 函數(shù)指針類型可以用于動態(tài)加載庫文件中的一個函數(shù),該函數(shù)返回一個 MyInterface 類型的指針。
五、為數(shù)組類型起別名
typedef int myarray[10];
myarray arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
六、為枚舉類型起別名
typedef enum { red, green, blue } Color;
Color c = green;
七、為模版函數(shù)起別名
在這個例子中,"IntStruct"是模板類型"MyStruct"的具體化,可以使用"IntStruct"來聲明"MyStruct<int>"類型的變量。
template <typename T>
struct MyStruct {
T value;
};
typedef MyStruct<int> IntStruct;
IntStruct s = { 5 };到此這篇關于C/C++中typedef的用法大全的文章就介紹到這了,更多相關C++ typedef內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
VSCode遠程代碼開發(fā)及DNS隧道端口轉發(fā)實現(xiàn)遠程辦公代碼
這篇文章主要介紹了VSCode遠程代碼開發(fā)及DNS隧道端口轉發(fā)實現(xiàn)遠程辦公,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04

