The header was missing the extern "C" directive which causes name mangling of functions by C++ compilers, leading to linker errors complaining of undefined references to these functions.
Also updated the coding style contribution guideline with a new "Language Linkage" section stating `extern "C"` block should be added to public headers. Fixes: 86c743cf9140 ("eal: define generic vector types") Cc: nelio.laranje...@6wind.com Cc: sta...@dpdk.org Signed-off-by: Ashish Sadanandan <ashish.sadanan...@gmail.com> --- .mailmap | 2 +- doc/guides/contributing/coding_style.rst | 21 +++++++++++++++++++++ lib/eal/include/generic/rte_vect.h | 8 ++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/.mailmap b/.mailmap index 50726e1232..24de59ba89 100644 --- a/.mailmap +++ b/.mailmap @@ -142,7 +142,7 @@ Ashijeet Acharya <ashijeet.acha...@6wind.com> Ashish Gupta <ashi...@marvell.com> <ashish.gu...@marvell.com> <ashish.gu...@caviumnetworks.com> Ashish Jain <ashish.j...@nxp.com> Ashish Paul <ap...@juniper.net> -Ashish Sadanandan <ashish.sadanan...@gmail.com> +Ashish Sadanandan <ashish.sadanan...@gmail.com> <quic_asada...@quicinc.com> Ashish Shah <ashish.n.s...@intel.com> Ashwin Sekhar T K <asek...@marvell.com> <ashwin.sek...@caviumnetworks.com> Asim Jamshed <asim.jams...@gmail.com> diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst index 1ebc79ca3c..27c947fcec 100644 --- a/doc/guides/contributing/coding_style.rst +++ b/doc/guides/contributing/coding_style.rst @@ -106,6 +106,27 @@ Headers should be protected against multiple inclusion with the usual: #endif /* _FILE_H_ */ +Language Linkage +~~~~~~~~~~~~~~~~ + +Public headers should enclose all function and variable declarations and definitions in an ``extern "C"`` block to facilitate interoperability with C++. + +.. code-block:: c + + #ifndef _FILE_H_ + #define _FILE_H_ + + #ifdef __cplusplus + extern "C" { + #endif + + /* Code */ + + #ifdef __cplusplus + } + #endif + + #endif /* _FILE_H_ */ Macros ~~~~~~ diff --git a/lib/eal/include/generic/rte_vect.h b/lib/eal/include/generic/rte_vect.h index 6540419cd2..3578d8749b 100644 --- a/lib/eal/include/generic/rte_vect.h +++ b/lib/eal/include/generic/rte_vect.h @@ -15,6 +15,10 @@ #include <stdint.h> +#ifdef __cplusplus +extern "C" { +#endif + #ifndef RTE_TOOLCHAIN_MSVC /* Unsigned vector types */ @@ -226,4 +230,8 @@ uint16_t rte_vect_get_max_simd_bitwidth(void); */ int rte_vect_set_max_simd_bitwidth(uint16_t bitwidth); +#ifdef __cplusplus +} +#endif + #endif /* _RTE_VECT_H_ */ -- 2.31.1