IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> d2.099 -> 正文阅读

[C++知识库]d2.099

DMD2.099.0版本于3月6日发布.这是大型版本,包含100个贡献者的20主要更改221个已关闭的Bugzilla问题.此版本一些亮点:D模块可通过ImportC导入C代码;D现在有throw表达式;现在窗口DMD中的默认为PE/COFF输出.完整更改日志.

使用ImportC在导入C源码模块

ImportC是D的有益补充.一旦解决了所有问题并实现了处理C预处理指令,避免了大部分绑定到C库的需求,可引入C头文件,无需外部工具,直接编译C源文件D程序中.
D2.099.0开始,还可用__import关键字直接导入D模块C文件.

// dsayhello.d
import core.stdc.stdio : puts;
extern(C) void helloImport() {
    puts("你好 __import!");
}

// dhelloimport.c
//c文件.
__import dsayhello;
__import core.stdc.stdio : puts;
int main(int argc, char** argv) {
    helloImport();
    puts("酷不酷");
    return 0;
}

这样编译:

dmd dhelloimport.c dsayhello.d

还可用它来导入通过ImportC编译的C模块:

// csayhello.c
__import core.stdc.stdio : puts;
void helloImport() {
    puts("你好 __import!");
}
// chelloimport.c
__import csayhello;
__import core.stdc.stdio : puts;
int main(int argc, char** argv) {
    helloImport();
    puts("酷不酷?");
    return 0;
}

编译:

dmd chelloimport.c csayhello.c

实现了throw表达式

以前,D中,throw一直是个语句.它不能在表达式中使用,因为表达式必须有类型,并且由于throw不返回值,所以无合适类型.这阻止了与以下语法一起使用:

(string err) => throw new Exception(err);

而要求这样:

(string err) { throw new Exception(err); }

DIP1034引入了底层类型,提供了启用throw表达式方法:"throw语句按底层类型表达式返回时.从D2.099.0开始,以下代码可编译:

void foo(int function() f) {}
void main() {
    foo(() => throw new Exception());
}

PE/COFF窗口上的默认DMD输出

多年来,DMD窗口上以OMF格式输出目标.主要原因概括为两个要点:
d作者已拥有生成OMF输出的C编译器后端,为Win32API分发OMF链接库的许可证,及理解OMF的(OPTLINK)链接器.
当他1999年开始研究D时,窗口上没有系统链接器,因此不能依赖安装特定链接器.
重用编译器后端和链接器允许Walter按编译器开箱即用发布DMD.这对D的早期采纳很重要.缺点是限制了窗口上的DMD32位.
最终,他不得不支持PE/COFF并要求微软链接器才能支持64位输出,同时,实现了32位的PE/COFF,但对不想安装微软构建工具(用于链接器)和SDK(用于Win32链接库)的人,他坚持DMD继续开箱即用.
最终,OPTLINK太旧了.随着D代码库增长,链接器错误越来越多.有要求默认启用PE/COFF.最后,有人提出了伴随LLVMLLD链接器及从MinGW项目生成的链接库的想法.允许DMD最终默认为PE/COFF,并同时保持开箱即用.现在PE/COFF窗口上的默认DMD输出.

即已弃用-m32mscoff开关,-m32现在指定PE/COFF,如果需要,新开关-m32omf可用于产生OMF输出(但最终会删除OMF).-m64开关一直产生PE/COFF输出,所以不变.

ldc

3月10日发布LDC1.29.01的测试版.此版本基于LLVM的D编译器基于D2.099.0+前端.它包括支持LLVM13,不再默认用ld.gold(lld),并包括对extern(D)ABI的重大更改.更改日志

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:05:39  更:2022-04-09 18:08:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:57:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码