首页 > 解决方案 > Swift 不允许在 Objective-C 或 C 头文件中重载函数

问题描述

我有一些快速代码,这在问题的上下文中并不重要。我也有 Objective-C 桥接头 ObjC-Swift-Bridging.h:

#import "my_objective_cpp_header.h"

而且我在该标头中有免费的 C/C++ - 样式函数:

inline void foo() {
}

inline void foo(int i) {
}

当我尝试在启用了 swift 4.0 的 xcode 9.2 中编译它时,出现错误:

my_objective_cpp_header.h:29:13: error: redefinition of 'foo'
inline void foo(int i){
            ^
my_objective_cpp_header.h:26:13: note: previous definition is here
inline void foo() {
            ^
ObjC-Swift-Bridging.h:22:9: note: in file included from ObjC-Swift-Bridging.h:22:
#import "my_objective_cpp_header.h"

如果我将这些函数放在 C/C++ 头文件中并写入,也会发生同样的情况

#include "my_cpp_header.h"

进入 ObjC-Swift-Bridging.h

所以... Swift 不支持 Objective-C++ 中支持的代码?我错过了什么?

标签: objective-ccswiftoverloading

解决方案


推荐阅读