内容简介:DLang 2.095.0 版本现已发布,该版本主要是增强了对 Objective-C 的支持,增加了声明 Objective-C 协议的能力,以及整个编译器、库和工具的改进。共包括了来自 61 位贡献者的 27 个主要更改和 78 个修复程序。一些...
DLang 2.095.0 版本现已发布,该版本主要是增强了对 Objective-C 的支持,增加了声明 Objective-C 协议的能力,以及整个编译器、库和 工具 的改进。共包括了来自 61 位贡献者的 27 个主要更改和 78 个修复程序。一些亮点内容如下:
- C ++ header 生成
一段时间以来,DMD 已经包含了通过 -CH 命令行选项从 D 源代码生成 C++ header 文件的实验性支持,以便于从 C++ 中调用 D 库。例如,给定以下 D 源文件。
cpp-ex.d
extern(C++): struct A { int x; } void printA(ref A a) { import std.stdio : writeln; writeln(a); }
和以下命令行:
dmd -HC cpp-ex.d
编译器将以下内容输出到 stdout(-HCf 指定一个文件名,-HCd 指定一个目录)。
// Automatically generated by Digital Mars D Compiler #pragma once #include <assert.h> #include <stddef.h> #include <stdint.h> #include <math.h> #ifdef CUSTOM_D_ARRAY_TYPE #define _d_dynamicArray CUSTOM_D_ARRAY_TYPE #else /// Represents a D [] array template<typename T> struct _d_dynamicArray { size_t length; T *ptr; _d_dynamicArray() : length(0), ptr(NULL) { } _d_dynamicArray(size_t length_in, T *ptr_in) : length(length_in), ptr(ptr_in) { } T& operator[](const size_t idx) { assert(idx < length); return ptr[idx]; } const T& operator[](const size_t idx) const { assert(idx < length); return ptr[idx]; } }; #endif struct A; struct A { int32_t x; A() : x() { } }; extern void printA(A& a);
此版本对该功能进行了许多修复和改进。需要注意的是,通过 -H、-Hf 和 -Hd 也支持生成 C headers。
- 默认的 C ++ 标准更改
现在默认使用 C++11 标准。此外,编译器现在将接受 -extern-std=c++20。在实践中,目前唯一的影响是改变了编译时的值,__traits(getTargetInfo, "cppStd"),但将来可能会增加新的类型。
- 改进的 Objective-C 支持
此版本通过支持 Objective-C 协议增强了 Objective-C 的兼容性。这是通过在 extern(Objective-C) 上下文中重新使用接口来实现的。此外,@optional 和 @selector 属性有助于完成这项工作。
- 改进的 compile-time feedback
更多详情可查看更改日志:https://dlang.org/changelog/2.095.0.html
下载地址:http://downloads.dlang.org/releases/2.x/2.095.0/
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Facebook 开源增强版 LASER,可使用90多种语言
- D语言 / DLang 编译器 2.092.0 发布,增强根基!
- D 语言/DLang 2.096.0 发布,增强跨平台能力!
- XXL-JOB v2.2.0 发布 | 跨语言特性增强
- Facebook开源增强版LASER库,包含93种语言工具包
- D语言/DLang 2.088.0 发布,增强与 C++ 交互操作
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。