使用 extern "C" 的潜在缺点是什么?
What are potential disadvantages of using extern "C"?
我已阅读
- When to use extern "C" in C++?
- In C++ source, what is the effect of extern "C"?
- Why do we need extern "C"{ #include <foo.h> } in C++?
但是,有一个问题我还没有找到答案:使用 extern "C"
(例如,在尽可能多的函数上)是否有(潜在的,未来的)缺点?
更具体地说:向接口仅使用 C 功能的函数添加 extern "C"
是否有任何缺点?换句话说,那些不使用@k-five 的回答中列出的功能的人?
缺点是您只能使用接口中的功能 extern "C"
函数,这些函数也可用于 C 函数。
这意味着:
1. 函数参数不能使用默认值,
2.不能使用引用参数,
3.你不能按值传递C++ 类(包括智能指针),
4. 你不能传递 enum class
个参数,
5. 你不能传递 bool
而不把它转换成 int
,
6. 你不能重载这样的函数,可能还有更多我现在想不起来的。
我已阅读
- When to use extern "C" in C++?
- In C++ source, what is the effect of extern "C"?
- Why do we need extern "C"{ #include <foo.h> } in C++?
但是,有一个问题我还没有找到答案:使用 extern "C"
(例如,在尽可能多的函数上)是否有(潜在的,未来的)缺点?
更具体地说:向接口仅使用 C 功能的函数添加 extern "C"
是否有任何缺点?换句话说,那些不使用@k-five 的回答中列出的功能的人?
缺点是您只能使用接口中的功能 extern "C"
函数,这些函数也可用于 C 函数。
这意味着:
1. 函数参数不能使用默认值,
2.不能使用引用参数,
3.你不能按值传递C++ 类(包括智能指针),
4. 你不能传递 enum class
个参数,
5. 你不能传递 bool
而不把它转换成 int
,
6. 你不能重载这样的函数,可能还有更多我现在想不起来的。