d相关内容

D编程语言中的Pimpl习惯用法

D有一个很棒的模块系统,与C ++相比,它可以大大减少编译时间.根据文档,D仍然提供不透明的结构和联合以启用pimpl习惯用法.我的问题是:如何在一个模块中声明嵌套结构(或并集),然后在另一个模块中定义它?它的语法是什么? 在C ++中,标题看起来像这样 struct S { ... struct Impl; Impl * p; }; 和实现文件(c ..
发布时间:2020-07-03 19:01:00 其他开发

界面和模板功能

我试图在两个不同的类之间建立接口,而函数的实现位于子类中.它适用于常规功能,但不幸的是不适用于模板功能. 查看示例: import std.conv; import std.stdio; interface Num { T num(T)(); } class A : Num { T num(T)() { return 5.to!T; } } ..
发布时间:2020-06-15 19:26:48 其他开发

GTKD未定义参考

我的代码: import gtk.MainWindow; import gtk.Main; void main(string[] args) { Main.init(args); auto win=new MainWindow("Hello World"); win.setDefaultSize(200,100); win.showAll(); Ma ..
发布时间:2020-06-12 18:50:05 其他开发

将SQLite与DMD静态链接(Windows x86)

我尝试与sqlite3静态链接,但未成功.我正在使用'etc.c.sqlite3'标头和sqlite3合并.为了创建.lib文件,我已经尝试了VC ++和MinGW-gcc,它们都成功地编译了源文件-但是它们都生成COFF对象格式(DMD使用的optlink与OMF一起使用).在阅读了有关"digitalmars.D"的大量文章之后,我尝试了几种不同的解决方案. objconv: 试图 ..
发布时间:2020-06-12 18:49:53 数据库

如何在没有D运行时的情况下编译D应用程序?

我一直试图永远解决这个问题,这开始惹恼我.我了解D运行时库.它是什么,它做什么.我也了解,没有它,您也可以编译D应用程序.就像XoMB所做的一样.好吧,XoMB定义了自己的运行时,但是在某些情况下,您不需要编写自己的运行时.我了解我正在使用的DigitalMars D编译器(dmd)在运行时在幕后做了很多事情,例如根据程序所需的内容发出对某些事情的引用.而且,每个程序都需要处理.因此,您必须自己定 ..
发布时间:2020-06-12 18:49:51 其他开发

STL __merge_without_buffer算法?

在哪里可以得到C ++ STL中 __ merge_without_buffer()中使用的算法的高级描述?我正在尝试以D编程语言重新实现此代码,并进行了一些增强。从阅读STL源代码开始,我似乎无法理解它在算法级别上的作用,因为有太多的底层细节使它难以理解。而且,我不想只是盲目地翻译代码,因为那样的话,如果它不起作用,我将不知道为什么,并且也无法添加我的增强功能。 解决方案 __ merg ..
发布时间:2020-06-03 21:01:20 C/C++开发

关于非空类型的辩论

我不断听到人们谈论非空引用类型如何解决这么多错误,并使编程变得如此容易。甚至null的创建者都将其称为十亿美元的错误和规范#引入了不可空类型来解决此问题。 编辑::忽略我对Spec#的评论。我误解了它的工作原理。 编辑2: ,我真的很希望有人与您争论:-) 所以我猜,在少数派中,我错了,但我不明白为什么这场辩论有任何优点。我将null视为错误查找工具。请考虑以下内容: c ..
发布时间:2020-06-01 00:17:57 其他开发

在哪里可以阅读有关D的类访问修饰符的更多信息?

我似乎找不到 D 编程的好参考语言类访问修饰符。 我知道 public 和 private 几乎可以保证,但是我想还有更多,我似乎找不到很好的信息来源。 有人可以指出我一个 解决方案 您可以在 dlang.org 简而言之: private ,只能在同一模块(文件)中访问 软件包,只能在同一软件包中访问 受保护的,是模块+继承的类 public ( ..
发布时间:2020-05-31 23:55:14 其他开发

加载共享库时自动执行的功能

在Windows中加载共享库时,LoadLibrary()调用将导致库中的DllMain对于每个新进程和线程库所附加,以及每个进程和线程库从其上附加执行. Mac OS X,Linux以及其他可能与POSIX兼容的操作系统是否有类似的机制? 解决方案 您可以使用.init机制为linux库定义一个加载函数.这与为二进制文件指定加载时间入口点相同(例如,使用main以外的东西作为程序的 ..
发布时间:2020-05-29 18:34:10 其他开发

D中优雅的运算符重载

有一阵子我对D的运算符重载的方向感到困惑,但是现在我意识到这是一个漂亮的系统……如果它仅适用于核心类型(int,float等).考虑以下代码: struct Vector { float X, Y; void opOpAssign(string op)(Vector vector) { X.opOpAssign!op(vector.X); // ERROR: ..
发布时间:2020-05-21 19:28:06 其他开发

具有类和结构的命名空间?

如果我有D语言的“嵌套成员",那就太好了,所以我有一个聪明的想法去编码 class Keyboard { struct Unused { string key1 = "Wake Up"; string key2 = "Sleep"; string key3 = "Power"; } Unused unused; } ..
发布时间:2020-05-20 01:32:21 其他开发

Nginx,fastcgi和开放式套接字

我正在尝试在Nginx上使用fastcgi,但是遇到了一些问题. Nginx不重用连接,它在BeginRequest标志中给出0,因此应用程序应在请求完成后关闭连接. 我要关闭以下代码: socket.shutdown(SocketShutdown.BOTH); socket.close(); 问题在于连接实际上并未关闭..它们会以TIME_WAIT的形式持续存在,而nginx(或 ..
发布时间:2020-05-17 20:57:36 其他开发

处理传入消息的最佳方法是什么?

我正在编写一个用于在线游戏的服务器,该服务器最终应能够处理1,000-2,000个客户端.我发现执行此操作的3种方法基本上是: 1个线程/连接(阻塞) 列出客户列表,并在它们之间循环(非阻塞) 选择(基本上是一次针对所有客户端的阻塞语句,并带有可选的超时时间?) 过去我使用1,但是众所周知,它的扩展性不好. 2还可以,但是我对一个客户在技术上能够使其他所有人冻结的感受却参差不齐. ..
发布时间:2020-05-17 18:45:35 其他开发

D中的逻辑常量

D具有两种类型的常量:不可变变量是被声明为不可变的,并且始终是不可变的,而 const 变量只是对象的只读版本. 逻辑常量是将函数标记为 const 的情况,但允许对一个或多个成员变量进行写访问.它的典型用途是用于延迟评估,例如(在C ++中) struct Matrix { double determinant() const { if ( m_dirty ) ..
发布时间:2020-05-14 02:06:51 其他开发