如何将c移植到d06中
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要介绍"如何将c移植到d06中",在日常操作中,相信很多人在如何将c移植到d06中问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何将c移植到d06中"的疑惑
千家信息网最后更新 2025年01月17日如何将c移植到d06中
这篇文章主要介绍"如何将c移植到d06中",在日常操作中,相信很多人在如何将c移植到d06中问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何将c移植到d06中"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
方法.但问题是...里面放什么,取决于c编译器,从最不重要位还是最重要位开始.及字段间是否有空白间隙.与std.bitmanip.bitfields遇着的问题一样.
我遇见过,然后用单个不能访问它的标志位字段,如果在多平台同其他编译器的库一起运行,没有简单解决方法.只有交给用户了.特定绑定,针对特定编译器/特定平台.
函数指针.一般作为回调.d有自己的语法,所以必须适配.
int function() MyFuncPtr;
//d风格指针声明
格式为中类型->函数关键字->参数列表->函数指针名
直接用MyFuncPtr也可以,但也可定义别名.
alias int function() da_MyFuncPtr;
da_MyFuncPtr MyFuncPtr;
//没啥意思
int foo(int i)
{
return i;
}
void main()
{
int function(int) fooPtr;//
fooPtr = &foo;
alias int function(int) da_fooPtr;
da_fooPtr fooPtr2 = &foo;
import std.stdio;
writeln(fooPtr(1));
writeln(fooPtr2(2));
}
//这样转换
// In C, foo.h
typedef int (*MyCallback)(void);
// In D
extern( C ) alias int function() MyCallback;
用别名,这样,你可像c一样用.
// In C, foo.h
extern void foo(int (*BarPtr)(int));
// In D.
// 1这样
extern( C ) void foo(int function(int) BarPtr);
// 2这样
extern( C ) alias int function(int) BarPtr;
extern( C ) void foo(BarPtr);
2较好,可以复用.接下来,构中内联声明函数指针.
// In C, foo.h
typedef struct
{
int (*BarPtr)(int);
} baz_t;
// In D
struct baz_t
{
extern( C ) int function(int) BarPtr;
}
静态绑定中的函数声明.d中不必声明.实现即是声明.也与你实现/声明位置无关.为链接c库,不必也无权访问实现,因而绑定.为了调用他们,d要知道存在他们.以便链接时找到正确地址.因此,必须声明.
// In C, foo.h
extern int foo(float f);
extern void bar(void);
// In D
extern( C )
{
int foo(float);
void bar();
}
动态绑定.用函数指针而不是函数声明.简单声明是不行的.先要考虑初化函数指针.
// D中.
int foo() { return 1; }
void* getPtr() { return cast(void*) &foo; }
void main()
{
int function() fooPtr;
fooPtr = getPtr();
}
//编译得到
fptr.d(10): Error: 不能隐式把(getPtr())的(void*)类型转为`int function()`
到此,关于"如何将c移植到d06中"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
函数
指针
移植
学习
编译
方法
编译器
问题
重要
接下来
别名
字段
平台
更多
类型
链接
帮助
不行
实用
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
兴化进口网络技术诚信合作
网络安全小贴士内容
git 多服务器
面向网络安全保险的风险评估指引
数据库那个级别不可重复读
学术数据库的内容
1025是什么数据库接口
软件开发对数据的要求
语音对讲软件开发地点
培养网络安全教育
数据库SLC
幼儿园网络安全宣传黑板报
软件开发qc手法
sql 数据库转移
山东嵌入式软件开发正规平台
服务器最大计算资源是cpu吗
mac 虚拟服务器
网络安全近五年文献
2021有什么网络安全赛事吗
sql数据库多对多
时序数据库的用途
江苏网络软件开发费用是多少
软件开发结束的标志
员工管理软件 服务器
局域网数据库安全
在日本留学文科生转软件开发
人民陆军网络安全宣传周
php 数组插入数据库
优似腾软件开发公司
服务器安全检测机构