Tag: d

触发“分段错误”的超奇怪问题

我不会深入研究这个问题(代码库已经有数千行而且相当复杂),所以我会尝试将…“窗口”缩小到我发现的位置。 这是触发“分段错误”的例程: extern (C) { void* Statements_new() { return cast(void*)(new Statements()); } void Statements_add(Statements s, Statement st) { //writeln(“In here”); if (s is null) writeln(“StatemenTS are null”); else writeln(“not null : “~ typeid(s).name); if (st is null) writeln(“statement is null”); else writeln(“not null : ” ~ typeid(st).name); s.add(st); //writeln(“Out of here”); } } 几点说明: 声明的方法只是“绑定”,因此可以直接从C代码(实际上是Bison)调用本机例程。 […]

将代理传递给D中的外部C函数

如何在D中将代理传递给带有函数指针的外部C函数?

Gstreamer在iPhone,黑莓,Android,诺基亚? 它会如何表现?

IPhone,Android,Blackberry,Nokia上的Gstreamer。 我们如何使用C或D或Vala语言制作它? 或者我们应该只使用Java还是Lua? 1)Glib移植到iPhone,Android,Blackberry,诺基亚可用吗? 对于Android,有一个提示http://gstreamer.freedesktop.org/wiki/GstreamerAndroid_InstallInstructions 对于iPhone,不知道 诺基亚,不知道 对于黑莓,不知道 希望有人就此主题提出一些答案和反馈。

最有效的便携式溢出检测?

可能重复: 乘数大,如何捕获溢出 接近C,C ++和D等金属语言,最有效的合理可移植方式(即使用汇编程序,虽然你可以假设两个补码运算和环绕行为)来检测无符号64位的溢出乘法上的整数?

mpi.h:使用不定义它的类型?

我正在尝试将OpenMPI的mpi.h的重要部分翻译成D编程语言,所以我可以从D调用它。(HTOD根本不起作用。)我无法围绕下面的代码包围: typedef struct ompi_communicator_t *MPI_Comm; OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_world; OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_self; OMPI_DECLSPEC extern struct ompi_communicator_t ompi_mpi_comm_null; 问题是ompi_communicator_t永远不会在mpi.h中定义,而mpi.h除了stddef.h之外不包含任何其他文件,它显然不包含定义。 (评论说它包含在ptrdiff_t 。)这些是mpi.h中唯一包含字符串ompi_communicator_t 。 这个结构的定义来自哪里? 有什么技巧我应该知道哪些类型可以凭空出现? (还有其他几种结构,但这是我偶然发现的第一个结构。)

如何使用D的C库?

今天我听说过D编程,它与C代码兼容。 不过我还没有找到任何关于是否可以使用D的GT库或PortAudio等C库的信息? 如果有可能,你能解释一下如何做到这一点吗?

ptrdiff_t太小了?

我一直想知道: ptrdiff_t是不是应该能够按照定义保持任意两个指针的差异? 当两个指针太远时怎么会失败呢? (我没有指出任何特定语言……我指的是所有具有此类型的语言。) (例如,当你有32位指针时,用地址0xFFFFFFFF从字节指针中减去带地址1的指针,它会溢出符号位…)

从D语言调用C ++(C)

如何从D程序调用C ++函数? 我仍然无法理解如何做到这一点。 我需要执行哪些命令? 我在Fedora中使用dmd。

memchr()如何在引擎盖下工作?

背景:我正在尝试创建一个纯D语言实现的function,大致相当于C的memchr,但使用数组和索引而不是指针。 原因是std.string将用于编译时function评估。 对于那些不熟悉的w / D,如果满足某些限制,可以在编译时评估函数。 一个限制是它们不能使用指针。 另一个是他们无法调用C函数或使用内联汇编语言。 使字符串库在编译时工作对于某些编译时代码生成很有用。 问题: memchr如何在引擎盖下工作以尽可能快地执行? 在Win32上,我使用简单循环在纯D中创建的任何东西,即使有明显的优化技术,例如禁用边界检查,循环展开等,也至少要慢2倍。有哪些非显而易见的技巧可用于像在字符串中查找字符一样简单?

Alloca实施

如何在D,C和C ++等语言中使用内联x86汇编程序实现alloca()? 我想创建一个稍微修改过的版本,但首先我需要知道标准版本是如何实现的。 从编译器中读取反汇编并没有帮助,因为它们执行了很多优化,我只想要规范forms。 编辑:我想困难的部分是我希望它具有正常的函数调用语法,即使用裸函数或其他东西,使它看起来像普通的alloca()。 编辑#2:啊,到底是什么,你可以假设我们没有省略帧指针。