2017-07-29 92 views
-2

我是DPDK中的新成員,因此在閱讀代碼時遇到一些疑問。 代碼在DPDK如下面kni_misc.c如何在DPDK代碼中解釋此C代碼

...

switch (dev_info.device_id) { 
      **#define RTE_PCI_DEV_ID_DECL_IGB(vend, dev) case (dev): 
      #include <rte_pci_dev_ids.h>** 
       ret = igb_kni_probe(found_pci, &lad_dev); 
       break; 
      #define RTE_PCI_DEV_ID_DECL_IXGBE(vend, dev) \ 
          case (dev): 
      #include <rte_pci_dev_ids.h> 
       ret = ixgbe_kni_probe(found_pci, &lad_dev); 
       break; 
      default: 
       ret = -1; 
       break; 

      } 

...開關後

,定義一個宏RTE_PCI_DEV_ID_DECL_IGB情況之後(如何使用它?) ,包括rte_pci_dev_ids.h,我也在h文件中找到這個宏。

**

甲不完整的宏開關和情況,並且宏 ,其發現在H文件之間定義包括殼體後。我不明白。

**

誰能幫助我理解這段代碼。

這段代碼的語法? 編譯過程? 工作流程?

感謝。

+0

好的C書怎麼樣?這應該包括前兩個。一旦你學習了C語言,第三部分將會清晰地閱讀它。 – Olaf

+0

e ..一個不完整的宏定義在開關和外殼之間,以及在h文件中找到的宏包含在外殼之後。我不明白。 –

+0

這是不好的風格imo,但與其他代碼沒有什麼不同。你知道你是否閱讀過有關C預處理器的章節! – Olaf

回答

-1

你需要看看頭文件,例如rte_pci_dev_ids.h。這些頭文件將指示所有支持的供應商和設備ID。 include之前的宏定義會將所有這些定義轉換爲「case」語句。

因此,基本上,include語句(調用探針)下方的語句將應用於頭文件中提及的所有「設備」(例如rte_pci_dev_ids.h)。因此,要添加新設備,只需將其包含在頭文件中,並且不需要在開關箱中進行更改。

+0

謝謝!我知道了 –