2401d,d导入C的问题

原文
D中是否可用仅C头文件库?
C语言中,我需要这样做:

#define STB_DS_IMPLEMENTATION
#include "stb_ds.h"

在包含h文件前,必须在单个C文件中定义.
在D中试过:

enum STB_DS_IMPLEMENTATION = 1;
import stb_ds;

但它不管用.有建议吗?也许使用中间C文件会工作 ,但我想知道D是否可完成.
这里自动转换

dmd -c test.c -Hf=test.di

一般使用"仅头"方式,建议把扩展文件名更改为.c直接编译它.

是的,你最好的选择是:
1,把.h重命名为.c并编辑它,以便通过或删除STB_DS_IMPLEMENTATION检查.
2,用你已编写的内容创建一个C文件:

#define STB_DS_IMPLEMENTATION
#include "stb_ds.h"

导入它.

尚不支持从d文件导入.h文件,因为查找优先级存在争议:
0
1

正在试使用仅头文件C库.此项目中的h文件,具体为:https://github.com/nothings/stb.
如果没有#define,这不行.只要有impl代码,按只包含一次设计此头库,因此依赖定义变量的C文件来显式"启用"要包含的impl代码.
根据链接线程,我试从仅有定义和包含的基本C文件生成一个di文件:

#define STB_DS_IMPLEMENTATION
#include "stb_ds.h"

DMD产生了一个段错误错误:

  dmd -c import_stb_ds.c -Hf=stb_ds.di
`[1]73719`段错误`dmd -c import_stb_ds.c -Hf=stb_ds.di`

LDC同样:

  ldc2 -c import_stb_ds.c -Hf=stb_ds.di

我应该报告错误吗?

-H开关有一个错误:
这里
但这不应是必需的,你应该可导入c文件.
这很奇怪,我会看看是否可重现它.
化简为:

enum {
    A };

-H编译,得到段错误.
相关代码hdrgen.d中:

foreach (em; *d.members)
{
   
    if (!em)
        continue;
    buf.writestring("alias ");
    buf.writestring(em.ident.toString);
    buf.writestring(" = ");
    buf.writestring(d.ident.toString);
    buf.writeByte('.');
    buf.writestring(em.ident.toString);
    buf.writeByte(';');
    buf.writenl();
}

它假定枚举有个名字,但在本例中,d.identnull.

相关推荐

  1. 2401d,d导入C问题

    2024-01-09 17:28:03       40 阅读
  2. 2401C++,C++自动注册

    2024-01-09 17:28:03       40 阅读
  3. P2404 自然数拆分问题

    2024-01-09 17:28:03       16 阅读
  4. P2404 自然数拆分问题 题解

    2024-01-09 17:28:03       14 阅读
  5. 2401llvm,clanglibtooling

    2024-01-09 17:28:03       42 阅读
  6. C++】使用 std::shared_ptr 导致循环引用问题

    2024-01-09 17:28:03       11 阅读
  7. C#win form解决导入CSV文件数据缺失问题

    2024-01-09 17:28:03       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-09 17:28:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-09 17:28:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-09 17:28:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-09 17:28:03       20 阅读

热门阅读

  1. Nacos与Eureka的区别详解

    2024-01-09 17:28:03       29 阅读
  2. 机器学习:自然语言处理介绍

    2024-01-09 17:28:03       30 阅读
  3. vue2打包后,接口地址可在打包文件中配置

    2024-01-09 17:28:03       43 阅读
  4. 【Artificial Intelligence】

    2024-01-09 17:28:03       33 阅读
  5. 不同波特率传输时间计算

    2024-01-09 17:28:03       39 阅读
  6. 《微信小程序开发从入门到实战》学习七十六

    2024-01-09 17:28:03       30 阅读