据我所知,typedef可用于定义新的自定义类型,例如:
// simple typedef
typedef unsigned long ulong;
// the following two objects have the same type
unsigned long l1;
ulong l2;
Run Code Online (Sandbox Code Playgroud)
我最近遇到了这个typedef,并且在解读声明中发生的事情时迷失了方向:
typedef int16_t CALL_CONVENTION(* product_init_t)(product_descript_t *const description)
Run Code Online (Sandbox Code Playgroud)
有人可以指导我并解释这是做什么的吗?
编辑:将NEW_TYPE更改为CALL_CONVENTION.这是一个定义.谢谢你发现了这一点.
Ale*_*exD 10
它将type声明product_init_t为指向函数的指针
product_descript_t *const description;int16_t;CALL_CONVENTION(正如@MM建议,即使它被错误命名).PS因为" 2016年的完整答案应该展示现代的写作方式type-alias "(@Howard Hinnant),这里是:
using product_init_t = int16_t (CALL_CONVENTION *)(product_descript_t *const description);
Run Code Online (Sandbox Code Playgroud)