我发现实例化_Generic需要源文件是.c文件并使用gcc -std=c11编译。将其命名为.cpp文件并使用g++ -std=c++11不起作用。同样,g++ -std=c11也不行(因为-std=c11选项仅适用于.c文件)。有没有一种好的方法在C++库中定义_Generic函数,并让C++应用程序使用该库?目的是支持C应用程序但不放弃对C++应用程序的支持。
我发现实例化_Generic需要源文件是.c文件并使用gcc -std=c11编译。将其命名为.cpp文件并使用g++ -std=c++11不起作用。同样,g++ -std=c11也不行(因为-std=c11选项仅适用于.c文件)。有没有一种好的方法在C++库中定义_Generic函数,并让C++应用程序使用该库?目的是支持C应用程序但不放弃对C++应用程序的支持。
C++ 中没有 _Generic
,因此无法在 C++ 代码中使用它。如果您想设计可跨编译的代码(例如头文件),请完全避免使用 _Generic
,或者使用 #ifdef __cplusplus
分别为 C 和 C++ 提供两个独立(或半独立)版本的相同代码,例如,在 C++ 端使用函数重载而不是 _Generic
。