如何在DPDK代码中解释此C代码

问题描述:

我是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

你需要看看头文件,例如rte_pci_dev_ids.h。这些头文件将指示所有支持的供应商和设备ID。 include之前的宏定义会将所有这些定义转换为“case”语句。

因此,基本上,include语句(调用探针)下方的语句将应用于头文件中提及的所有“设备”(例如rte_pci_dev_ids.h)。因此,要添加新设备,只需将其包含在头文件中,并且不需要在开关箱中进行更改。

+0

谢谢!我知道了 –