0
点赞
收藏
分享

微信扫一扫

d中导入C的案例

最近介绍了​​ImportC​​.我做了以下事情:

​1)​​从​​libplot​​文档中​​复制​​示例代码并​​粘贴​​到​​D文件​​中.

​2)​​,​​添加​​以下行到文件中:

import plot;

注意:为此,在​​Makefile​​中添加了以下行:

plot.i: plot.c Makefile
gcc -I /usr/include -E $< > $@

一旦​​外部​​​预处理器生成​​plot.i​​​,​​D​​​就可​​导入​​​它.我必须否认​​plot.c​​需要以下操作:

//这是必需的,因为不支持`__restrict`
#define __restrict restrict
#undef __GNUC__
//需要跳过`__REDIRECT`宏的定义,因为
//无法解析'fscanf'`等某些兼容性声明.(?)
#include "stdio.h"
//这是必需的,因为`plot.h`使用`FILE`但未能包含`stdio.h`
//这是程序需要的
#include "plot.h"

​3)​​我在示例​​C代码​​中改了两个地方:

​3.1​​,添加​​.dup.ptr​​到以下​​字面​​中,因为​​D与C的​​字面不同:

"PAGESIZE".dup.ptr

​3.2​​​,我更改​​以下清单常量​​​为​​D​​:

// #define MAXORDER = 12;
enum MAXORDER = 12;

总结:我(几乎)​​复制/粘贴​​C代码到​​D中​​,​​整个​​代码都可​​正常​​工作,甚至不用​​绑定​​.

然后我​​进一步​​实验在​​彼此​​间导入​​C和D​​文件.它管用.

今天更简单,因为​​__restrict​​问题已经消失,​​D​​可以​​预处理​​.



举报

相关推荐

0 条评论