我是DPDK的新手,所以在阅读代码时我有些疑问。 DPDK 中的 kni_misc.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;
}
...
switch后定义一个宏RTE_PCI_DEV_ID_DECL_IGB(怎么用?) case后,包含rte_pci_dev_ids.h,我也在h文件中找到了这个宏。
**
A not complete Macro definition between switch and case, and the Macro which find in the h file included after case. i can not understand it.
**
谁能帮我理解这段代码。
这段代码的语法? 编译过程? 工作流程?
谢谢。
最佳答案
您需要查看头文件内部,例如rte_pci_dev_ids.h。这些头文件将指示所有受支持的供应商和设备 ID。 include之前的宏定义会将所有此类定义转换为“case”语句。
因此,基本上包含语句(调用探针)下面的语句将适用于头文件中提到的所有“设备”(例如rte_pci_dev_ids.h)。因此,要添加新设备,您只需将其包含在头文件中,并且不需要在 switch-case 中进行任何更改。
关于c - 如何在DPDK代码中解释这段C代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45385161/