为啥不允许“重载函数的第二个 C 链接”?

Posted

技术标签:

【中文标题】为啥不允许“重载函数的第二个 C 链接”?【英文标题】:Why "second C linkage of overloaded function" is not allowed?为什么不允许“重载函数的第二个 C 链接”? 【发布时间】:2014-05-07 12:52:07 【问题描述】:

我将我的 C++ dll 转换为 C dll:

#ifdef __cplusplus
    extern "C" 
#endif

MY_EXPORT int  my_func();
MY_EXPORT void my_func(int n);

#ifdef __cplusplus
    
#endif

没有extern C 声明一切正常。有了这个声明,我得到了

错误 C2733:重载函数“my_func”的第二个 C 链接不是 允许

为什么不允许从 C 风格的 dll 中导出重载函数?

【问题讨论】:

***.com/questions/479207/function-overloading-in-c C 链接意味着没有名称修饰。因此他们会得到相同的名字。 error C2733 second C linkage of overloaded function 'function' not allowed的可能重复 【参考方案1】:

C 不允许重载函数。那就是C不支持重载。这是 C++ 的一个特性。

【讨论】:

以上是关于为啥不允许“重载函数的第二个 C 链接”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 WCF 中不允许方法重载?

为啥我不能在 PHP 中重载构造函数?

为啥函数重载不提示错误?

在重载时为啥不考虑函数的返回类型? [复制]

为啥这些重载的函数调用模棱两可?

为啥 const/non-const 函数重载的继承不明确?