List.h定義了一個名爲list_entry的宏,它是container_of()函數的包裝器。 優雅的功能,這似乎很微妙:Container_of()不編譯
考慮這段代碼:
tmp = list_entry(pos,(struct Order),ord_Queue);
當我編譯使用gcc,預計表達的恆定錯誤彈出。
我的結構定義爲:
struct Order
{
double idNum;
char* entryTime;
char* eventTime;
struct list_head ord_Queue;
};
似乎有與container_of一個問題,當有在Arg2所得和ARG3使用多餘的括號,並且應該只有Arg1的禮貌here一個支架。我試過了,但它不起作用。
一些幫助,將不勝感激。
你有沒有試過擺脫`struct Order`周圍的`(`和`)`?正如編譯器告訴你的那樣,struct Order不是一個表達式,因此不能任意被(和)哪個 - 圍繞上下文爲函數或宏提供參數 - 僅用於對子表達式進行分組 – 2011-02-14 10:34:56
是的,我首先開始使用它,但它仍然抱怨,然後在閱讀上面給出的鏈接之後,我添加了括號。仍然沒有編譯。最後,我試圖解決整個宏,並嘗試使用相同的量身定做來解決手頭的問題(使用固定的數據類型),但它仍然沒有正確編譯。最後,它帶來了預取問題。所以是的,我嘗試了我所能想到的所有可能性(有趣的是,當我不使用宏並在我的代碼中使用它的定義時,編譯器不停地抱怨,直到一切都沒有被括起來) – Soham 2011-02-14 11:33:01