1.Dlang的历史
Dlang(D语言)是由Digital火星Walter Bright开发的面向对象的多范型系统编程语言。它的发展始于1999年,并于2001年首次发布,D(1.0)的主要版本发布于2007年,目前有D2版本的D语言
2.Dlang 环境安装(windows系统)
下载地址https://dlang.org/download.html

下载exe 一路next 中间选择一下安装目录即可 默认路径在 系统盘:/D
安装好以后打开cmd 输入dmd

正常情况下是属于正常输出上图的信息
因为dmd 默认安装会自己添加环境变量
若输入dmd 出现:不是内部或外部命令等等错误
就查看一下自己的环境变量配置,如果没报错就请忽略配置环境变量这块
输入path查看

若是找不到就自己配置一下

上图中我安装的时候是自定义路径 (新手安装安装目录的时候 尽量不要使用中文路径,避免出现意外错误)
bin目录在dmd2/windows下

配置完保存 输入dmd 就会出现类似信息

3 helloword
新建记事本后缀为.d
右键编辑
代码
import std.stdio;//输入输出类
void main()
{
writeln("hello word");//输出语句
}
cd到 hello.d目录下 用dmd编译

要注意报错是
hello.d(1): Error: char 0xff1b not allowed in identifier
hello.d(1): Error: character 0xff1b is not a valid token
hello.d(3): Error: `;` expected
hello.d(3): Error: function declaration without return type. (Note that constructors are always named `this`)
hello.d(4): Error: no identifier for declarator `main()`
hello.d(5): Error: character 0xff1b is not a valid token
hello.d(6): Error: found `}` when expecting `;` following statement
hello.d(6): Error: found `End of File` when expecting `}` following compound statement
不要忘记;号 也要注意不要用中文符号
Hello的四种写法(我抄的原文是:https://www.cnblogs.com/quetzal/p/4433926.html
这是原作者博客

)
import std.stdio;
{
writeln("Hello World");
}
版本二:使用C标准库
import core.stdc.stdio;
void main()
{
puts("hello world");
}
版本三:使用系统调用
import core.sys.posix.unistd;
void main()
{
write(STDOUT_FILENO, "hello world\n".ptr, 12);
}
版本四:被C调用
D代码(hello.d)
import std.stdio;
extern(C) void hello()
{
writeln("Hello World");
}
C代码(hello.c)
void hello();
void rt_init();
void rt_term();
int main()
{
rt_init(); // 初始化D runtime以支持D中的高级特性,如果没有用到可以省略
hello();
// ...
rt_term(); // 释放 D runtime 资源,需与rt_init 配对
return 0;
}
此被C调用程序的编译方法:
$ dmd -c hello.d
$ gcc -o hello hello.o hello.c -lphobos2
$ ./hello
Hello World
D与C是二进制兼容的,但并不兼容源码,所以编译时要使用二进制文件,另外不要忘记链接 libphobos2 这个库,如果你懂C那不需要我啰嗦原因了
这四个小程序初步展示了D语言的外观,以及每一个系统编程语言必需要做到的与C的交互性,在这点上C++可以无缝的实现与C的互调,D相比C++多了两个函数调用,在实现项目中,多了两个函数调用的编码成本几乎可以忽略,相比Go的方式和Rust的FFI要舒服的多,看上去也很自然
有的朋友可以注意到了,D代码跟C++很像,没错,它非常的C like,但这只是冰山一角,还有很多高级特性这里没有体现出来