天天看點

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​

​檔案.它管用.