Bug 1003

Summary: unbalanced braces in header files for extern C declarations causing C++ compilation errors
Product: DPDK Reporter: Scott Wasson (swasson)
Component: mesonAssignee: dev
Status: UNCONFIRMED ---    
Severity: normal CC: kaiwenx.deng
Priority: Normal    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   

Description Scott Wasson 2022-05-02 20:12:05 CEST
This was introduced in DPDK 20.11.5.  20.11.4 did not have these issues:

There are a few header files that have multiple extern C declarations, and some of them have unbalanced braces.  This causes C++ compiler errors.

To find them all:

 $ find . -name '*.h'|xargs grep 'extern "C' > foo
 $ find . -name '*.h'|xargs grep 'extern "C'|uniq > bar
 $ diff foo bar
102d101
< ./lib/librte_eventdev/rte_eventdev_pmd.h:extern "C" {
105d103
< ./lib/librte_eventdev/rte_eventdev_pmd_pci.h:extern "C" {
110d107
< ./lib/librte_eventdev/rte_eventdev_pmd_vdev.h:extern "C" {
153d149
< ./lib/librte_ethdev/rte_ethdev_driver.h:extern "C" {

rte_eventdev_pmd.h merely has two nested extern C blocks.

rte_eventdev_pmd_pci.h has two nested extern C blocks, but only one closing brace at the bottom of the file.

The same is true for rte_ethdev_driver.h and rte_eventdev_pmd_vdev.h.

The latter three cause compilation errors when included from C++ code.