我盡量描述清楚問題,如有不清楚請留言,我會盡快回覆.
有以下聲明形式:
typedef struct mr_dup_ops
{
/* 查询镜像状态 */
int32_t (*dup_mirror_state_query)(uint32_t, mr_kern_mirror_state_query_req_t*);
……………………
……………………
} mr_dup_owner_ops_t;
然後宣告
STATIC mr_dup_owner_ops_t g_local_mr_dup_ops = {
.dup_mirror_state_query = mr_ioctl_kern_mirror_state_query,
………………
………………
};
接著假設有mr_dup_owner_ops_t的指標ops的話就可以透過 ops->dup_mirror_state_query來存取函數mr_ioctl_kern_mirror_state_query.
結構體mr_dup_owner_ops_t我能看懂是聲明了一組函數指針,那麼加STATIC 結構體 結構體名 ={.dup_mirror_state_query 這是什麼形式?
只是宣告變數 g_local_mr_dup_ops 的作用域為靜態的而已。 STATIC 應該是什麼宏,C/C++ 的關鍵字是小寫的。
static 結構體A 變數a = { ..... }
定義一個A型別的變數a,靜態屬性,並使用{....} 初始化
初始化部分的語法是gcc的擴展,叫做Designated Initializers.