2017-07-29 6 views
-2

Je suis nouveau dans DPDK, donc j'ai un peu de doute lors de la lecture du code. Code comme ci-dessous dpdk dans kni_misc.cComment expliquer ce code C dans le code DPDK

...

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; 

      } 

...

après commutateur, définir une macro RTE_PCI_DEV_ID_DECL_IGB (comment l'utiliser?) après cas, inclure rte_pci_dev_ids.h, et je trouve aussi cette macro dans le fichier h.

**

A ne pas complète Définition d'une macro entre le commutateur et le boîtier, et le Macro qui trouvent dans le fichier h inclus après cas. Je ne le comprends pas.

**

Quelqu'un pourrait-il me aider à comprendre ce code.

La syntaxe de ce code? processus de compilation? processus de travail?

Merci.

+0

Que diriez-vous d'un bon livre C? Cela devrait couvrir les deux premiers. Le troisième deviendra clair en lisant la doucmentation une fois que vous avez appris le langage C. – Olaf

+0

e .. une définition Macro pas complète entre le commutateur et le cas, et la macro qui trouve dans le fichier h inclus après cas. Je ne le comprends pas. –

+0

C'est un mauvais style imo, mais pas différent des autres codes. Vous devriez savoir si vous avez lu le chapitre sur le préprocesseur C! – Olaf

Répondre

-1

Vous devez regarder à l'intérieur du fichier d'en-tête, par exemple. rte_pci_dev_ids.h. Ces fichiers d'en-tête indiquent tous les identifiants de fournisseur et de périphérique pris en charge. La définition de macro avant l'inclusion convertira toutes ces définitions en une instruction "case". Donc, essentiellement, l'instruction ci-dessous l'instruction include (sonde d'appel) s'appliquera à tous les "périphériques" qui sont mentionnés dans le fichier d'en-tête (par exemple, rte_pci_dev_ids.h). Donc, pour ajouter un nouveau périphérique, il suffit de l'inclure dans le fichier d'en-tête et aucune modification n'est requise dans le cas-switch.

+0

Merci! je l'ai –