ethercat技巧總結

1.鏈表使用:鏈表的使用是基於指針的,可以提前定義好每個使用類的第一個元素作爲一個鏈表頭(即prev和next信息),然後使用指針強制轉換就可以對鏈表頭和真實類之間的互相轉換,因此只要再加一個類型的元素,就可以實現將不同類別連接在同一個鏈表上的操作。

當然,也可以將鏈表頭和鏈表內容進行分離,即將鏈表頭、鏈表內容需要空間大小提取出來到一個鏈表頭結構體中,然後將鏈表內容第一個元素定義爲鏈表內容類型(爲了在將所有的鏈表內容組裝到一段連續空間的時候也可以進行正確提取,即判斷類型使用強制轉換然後移動當前指針即可)。

當然針對鏈表的最後一個元素可以使用一個結束標誌來進行處理,這樣就不會越界。

2.空間邏輯地址使用:可以在內存中先申請一大塊內存,而後基於獲取到的內存塊進行內存分配,這個時候就不需要再進行malloc過程,只需要將需要的內存部分(一般是結構體一類已經大小確定的對象)的首地址進行返回即可,這樣的話,之前分配的內存在釋放時,就無法進行再次使用,需要再看一下如何解決這個問題。

3.狀態機:狀態機中的每個狀態函數都應該包含兩個過程,第一個就是狀態機正常的處理函數,第二個就是將狀態切換到下一個狀態的狀態進入函數(通常直接修改狀態函數指向指針即可,但是有時可能需要一定的初始化過程)。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章