IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> d导入c的一些问题 -> 正文阅读

[C++知识库]d导入c的一些问题

int printf(char *, ...);
int main()
{
	printf("%d\n", (int)sizeof("a"));
}//串字面大小.

接着

// test1.c
int printf(char *, ...);
int main()
{
	int a = 0;
	// dmd为1,其他编译器为-1
	// 删掉括号,漏洞消失
	int b = - (a) - 1;
	printf("%d\n", b);
}

// test2.c
int example2()
{
	int *a, *b;
	// 错误`(a) - (cast(char*)b)`: `int*` 和 `char*`不匹配.删除(a)括号,又正确了.
	long diff = (char*)(a) - (char*)b;
}

再一个:

void fn()
{
	int *p;
	// 错误,p非整,是`整*`.
	// 去掉(p)括号,又可以了.
	unsigned x = (unsigned)(p) & 1;
}

typedef union value_u {
	void *p;
} value_t;
typedef struct data_s {
	void *p;
} data_t;
void fn()
{
	value_t a;
	const value_t b;
	// 错误,不能隐式转换`常`至`非常`.
	a = b;
	data_t aa;
	const data_t bb;
	// 同样错误.
	aa = bb;
}

如果,void *p为非指针类型,则错误消失了.
如果,用普通名,而不是typedef,错误就不见了.


翻译时

static void terminate() {}
//转成
extern(C) private void terminate() {}

时,有冲突,标记为extern(D)时,改了abi.
dImportC加了静态符号.或许可用@Cstaticpragma(noLinkerSymbol)来暴露给d代码.
即使,带,编译器仍发出全局终止符号至目标文件.

原因是,元编程时,包括私有,生成大量符号,跨多文件时,经常相同.D再放在COMDAT节中.链接器只在exe中有一个.
不合并,导致重复及增加大小.这是重大变化.

只需要针对-betterC代码.C翻译成D.不知如何处理static.翻译成,仍导致符号冲突.只需要类似ldcpragma(LDC_no_moduleinfo)pragma(LDC_no_typeinfo)就行.


// dimodule.di
void fn()() { return; }

// main.d
import dimodule;
void main() { fn(); }

dmd main.d没问题,dmd -i main.d模板参数报错.

int main() { double x = __builtin_inf(); }
//同样
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:13:21  更:2022-03-15 22:15:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:46:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码