Carbon语言 C++互操作
Carbon语言与C++互操作,是Carbon宣传的重点,也是最大难点。
现在Carbon语言还不完善,这里举一个Keynote中演示的例子。
有一个C++的头文件 circle.h:
struct Circle { float r; }
1. Carbon调用C++
编写一个Carbon代码文件:geometry.carbon:
package Geometry api; import Math; import Cpp library "circle.h"; fn PrintArea(circles: Slice(Cpp.Circle)) { var area: f32 = 0; for (c: Cpp.Circle in circles) { area += Math.Pi * c.r * c.r; } Print("Total area: {0}", area); }
可以通过 import Cpp library "circle.h"; 这种语法来引用C++头文件中声明的类型。
2. C++调用Carbon
在写一个C++的源文件:
#include #include "circle.h" #include "geometry.carbon.h" auto main(int argc, char* argv) -> int { std::vector circles = {{1.0}, {2.0}}; Geometry::PrintArea(circles); return 0; }