2014-01-09 36 views
1

我寫我的C代碼,我有以下情況:如何使用Doxygen的一個指針文件函數指針的向量

typedef struct MyStruct { 
    /** Some comment */ 
    int (*const (*FuncList)[])(void); 
} MyList; 

doxygen的還是返回了以下錯誤:警告:記錄符號`int(* const MyStruct :: FuncList'沒有聲明或定義。

它注意到Doxygen不理解什麼是指向函數指針向量的指針,因爲如果我更改爲更簡單的句子, 我無法改變寫這句話的方式,因爲我的代碼必須符合MISRA標準

+0

更重要的是,你爲什麼要編寫難以閱讀的代碼? –

+1

我認爲閱讀並不那麼困難。對我而言,爲指針添加大量類型定義會使代碼更難以閱讀。就我而言,所有的信息都在一行中,並且非常清楚元素FuncList是什麼。我可能錯了,比如說,我認爲Linux內核源代碼不允許typedefs中的指針。 – Gus

回答

2

我認爲你應該通過使用一些類型定義來幫助doxygen(以及你的代碼的讀者)

/** A function pointer */ 
typedef int (*TFuncPtr)(void); 

/** const pointer to an array of TFuncPtr's */ 
typedef TFuncPtr (*const TFuncList)[]; 

typedef struct MyStruct { 
    /** Some comment */ 
    TFuncList FuncList; 
} MyList; 

我很確定MISRA會同意。

相關問題