Swift是否原生支持C语言?

3

Objective C 能够原生编译 C 代码。Objective C 是在 C 的基础上构建的。Swift 是否能做到相同的功能呢?如果不能,那么它们之间有什么区别呢?


好的,Swift编译器不会编译C语言,但是你可以在Xcode项目中混合使用C和Swift,并且它们可以相互调用。 - vacawama
Objc是C的超集。Swift被设计成与Objc API(包括C API)互操作,但您不能在一个文件中组合C代码和Swift代码。 - Sulthan
2个回答

5
与 Objective-C 不同,它是 C 的适当超集,Swift 是全新的语言。由于语法不兼容,Swift 无法编译 C 代码。
Swift 可以与 C 代码互操作(有关更多信息,请参见 与 C API 交互 文章)。但是,API 背后的 C 代码需要使用 C 编译器单独编译。

0

Swift使用Swift编译器进行解析,然后使用LLVM进行优化和代码生成。因此,Swift编译器无法解析C语法。

由于ObjectiveC使用clang编译器(它编译C、C++、ObjectiveC语言),可以生成语法树并使用LLVM进行优化和代码生成。因此,我们可以在Objective C中使用C。因此,Clang可以解析C/C++/Objective C代码,生成语法树,进行语义分析,而LLVM则进行后端编译。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接