On Mon, Sep 9, 2024 at 2:05 PM Mattias Rönnblom <hof...@lysator.liu.se> wrote: > > Mattias, there are issues reported by the CI (compilation on Ubuntu > > 22.04 in GHA, and unit test failure in UNH), please have a look. > > > > > > Standard practice in DPDK header files is the following: > > -- > /* rte_bar.h */ > #ifdef __cplusplus > extern "C" { > #endif > > #include <rte_foo.h> > > void > rte_foo_do(void); > > /../ > -- > > That seems not like best practice to me, since rte_bar.h is messing > around with linkage of constructs of any files included. In particular, > it prohibits replacing _Generic with C++ function overloading, in C++ TUs. > > What one should do is to have extern "C" linkage only on functions which > the include file in question (e.g., rte_foo.h) itself declares.
This is probably not the best practice, but since you intend to fix it, it will be perfect afterwards :-). > > -- > /* rte_bar.h */ > #include <rte_foo.h> > > #ifdef __cplusplus > extern "C" { > #endif > > void > rte_foo_do(void); > > /../ > -- > > There are 259 header files in the DPDK repo in need of fixing. > > Should the fix be 259 patches, or something smaller? One large patch, or > a patch per library, or something else. Please advise, over. The change seems mechanical, so one single change is ok. -- David Marchand