在 C 中,用 typedef 定义一个新类型更像是宏,而不是类型声明。定义等价类型的
typedef,可以与原始类型自由地互换。清单 2 显示了一个定义回调函数的示例,其中在签名中使用了一个
typedef,但是调用者提供给回调的是一个等价类型,而编译器和运行时都可以接受它:
清单 2. C 语言的 typedef
示例
// Define a type called "callback" that is a function pointer
typedef void (*Callback)(int);
void doSomething(Callback callback) { }
// This function conforms to the type defined by Callback
void callbackFunction(int arg) { }
// So a caller can pass the address of callbackFunction to doSomething
void useCallback() {
doSomething(&callbackFunction);
}