12 2020 档案

摘要:w.b.(d作者) dmd后端的总体设计是简单的,复杂性来自指令集,没办法的事,内联汇编器也是,intel的初始设计管用了40年.而x87则不行了. 重写代码,很难.1%花费500%的时间,还要花几年去解决过去已解决的漏洞. dmd后端12万行,包括:优化器,调试符号信息,生成异常处理表,及大量目标 阅读全文
posted @ 2020-12-31 09:56 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:窗口与dmd 对接入门 数组1 绑定细节 数组和函数 上面是绑定,下面是-betterC. 简介 消除漏洞 转换make.c到d 顺便一篇南美奇葩水果 阅读全文
posted @ 2020-12-29 09:55 zjh6 阅读(31) 评论(0) 推荐(0) 编辑
摘要:原地址 作者:m.p. 本篇讨论声明和调用数组为参数的函数.d中用c库很简单,但细节差异很重要. c中声明接收数组参数的函数. void f0(int *arr); c中可传int a[]/int b[3]给函数,然后数组退化为指针.即传了个指针给函数.类似函数中,得给出结束标记,如串中\0结束标志 阅读全文
posted @ 2020-12-28 23:05 zjh6 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原地址 作者:(m.p) 我曾经维护一个Derelict(org)项目,主要是一堆函数/类型声明.使我得到绑定c到d的经验,还有个deimos项目.本文探讨一些问题. 首先要考虑静态/动态绑定.静态指编译时连接c库/目标文件.动态则指运行时加载dll/so/dylib等.我搞的多是动态,而deimo 阅读全文
posted @ 2020-12-28 17:17 zjh6 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原地址 作者:(m.p) 移植c接口时,免不了与数组打交道,可能为串.尽管d与c的数组实现不一样,但基本构造块是一样的.因而,只要记得区别,就容易兼容. 在d中用c接口时,要转换c代码至d.直接用c,从中受益.移植时尽量保持原样.然后继续看声明/初化及如何转换.还要讲多维数组,d数组分析,从c函数中 阅读全文
posted @ 2020-12-27 23:07 zjh6 阅读(5) 评论(0) 推荐(0) 编辑
摘要:原地址 早期的d的一个设计目标就是与c对接.详细参考,因此,提供abi兼容,允许访问c标准库,并利用与c/c++编译器相同的目标文件格式/链接器.大多数d类型,甚至构直接与c构兼容,并可自由传递给c函数.当然得加上外(c).很多时候,你可以复制/粘贴c代码,然后稍微修改下,就可以编译了.同样,用c声 阅读全文
posted @ 2020-12-27 20:24 zjh6 阅读(28) 评论(0) 推荐(0) 编辑
摘要:原地址 在其它系统,在version(Posix)下,一般都有c编译器,而windows下不一样.主要目的是确保可用c编译器. 假定有以下2源文件cfoo.c及dfoo.d: #include <stdio.h> void say_hello(void) { puts("Hello!"); } 及: 阅读全文
posted @ 2020-12-27 16:57 zjh6 阅读(20) 评论(0) 推荐(0) 编辑
摘要:原地址 作者:W.B.(d作者) 我们要消除bug,否则其消耗你时间/金钱.你可以通过改进工具而少遭罪. 数组溢出 计算数组和: #include <stdio.h> #define MAX 10 int sumArray(int* p) { int sum = 0; int i; for (i = 阅读全文
posted @ 2020-12-27 10:14 zjh6 阅读(7) 评论(0) 推荐(0) 编辑
摘要:原地址 作者:W.B(D作者) d一开始就设计为,与c直接交互,与c++轻量交互.这样可访问无穷的c库,标准c运行时库及操作系统接口(一般也是c.有大量c编写的程序.d可对接c,但c不行.d必须要控制主函数,这也是更好的c.其实c++就是曾经更好的c.早期c++编译器可编译c.这推动了c++的成功. 阅读全文
posted @ 2020-12-26 22:44 zjh6 阅读(18) 评论(0) 推荐(0) 编辑
摘要:原地址 参考地址 作者:W.B,AA. 大意:d提供了许多系统级编码的功能,如无限制指针,整数和指针转换及@系统属性.但,定义这些危险操作时,还要考虑经济性.本dip能够保证引用不指向损坏对象. 总之 接收并想返回引用的函数,必须用中注解.模板/λ可以推导出,但其他声明必须显式注解.如: @安全: 阅读全文
posted @ 2020-12-25 18:13 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:常见相同意思英语: 假,FALSE,false 错误,Error,error 函数,FUNCTION,function 模块,MODULE,module 无效,NULL,null 真,TRUE,true 对齐,alignof,align 正,unsigned,uint 阅读全文
posted @ 2020-12-21 20:25 zjh6 阅读(29) 评论(0) 推荐(0) 编辑
摘要:void f2a(string a,ref string[string]t){//ref File b=a;//keyi foreach(d;b.byLine()){// auto c=d.split(','); t[c[0].idup]=c[0].idup;// } writeln(t.lengt 阅读全文
posted @ 2020-12-20 16:41 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:string[string]t; File a="ab.txt";//keyi //string b=a.readln(); //string[]d; t["kb"]="aa"; foreach(b;a.byLine()){// //writeln(b); auto c=b.split(','); 阅读全文
posted @ 2020-12-20 16:25 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:在vim猜编码时,一般utf8,他猜不中.基本上都是 乱码.但如果加上bom头,然后就能够转换成utf8了. 阅读全文
posted @ 2020-12-20 10:29 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:代码不高亮,是因为保存时,未按utf8编码保存.所以一改然后就出问题了. File "D:\Vim2coc\vimfiles\bundle\youcompleteme\third_party\ycmd\ycmd\utils.py", line 58, in <module> CORE_MISSING 阅读全文
posted @ 2020-12-19 21:13 zjh6 阅读(17) 评论(0) 推荐(0) 编辑
摘要:当(1){ 如(入.尾)断;c=看(); 如(!是字母(c)){右();下;} 动 t=入.取空连英<1>();如(!t)下; 出.加(*t); }//取连英 主要两个操作,1是*t,一是!t. 阅读全文
posted @ 2020-12-19 17:32 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:我们知道,有时,要用utf8格式,而主要的encoding=gbk,又改不得,改了要出问题.那么,我可以专门针对文件类型用utf8,但探测时先探测utf8,这样,vim就不会出问题了. au BufRead *.d set fenc=utf8 au BufRead *.d set fileencod 阅读全文
posted @ 2020-12-18 18:14 zjh6 阅读(18) 评论(0) 推荐(0) 编辑
摘要:我用dub编译druntime,简直是瞬间就编译好了,是不是太吓人了. 编译这个标准库,主要是改一下目录.不然人家找不到一些函数,因为可能有最新的函数. DFLAGS="-I%@P%\..\..\src\phobos" "-Ik:\d2\druntime\src" "-I%@P%\..\..\src 阅读全文
posted @ 2020-12-17 20:16 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:标.变量,以变量为中心,其不是c++的变量,而是可包含任意类型值的类型安全容器.其也知道包含的值的类型,c++却用变量这个名字来实现聚集(并)类型. 导入 标.变量; 变量 a; a=42; 断定(a.类型==具型(整)); a+=1; 断定(a==43); 浮 f=a.取!浮;//转为浮 断定(f 阅读全文
posted @ 2020-12-16 17:54 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:原地址 早前,参加c++大会,这是常式的大会,我(作者)怀疑c++,不过他们很开阔.为了学习d,我重现yomm11,觉得开放方法很不错. 从成员到自由函数. 可以参见c++大神最后一章多方法 开放方法像虚函数,只是在类外声明.经常与多方法混淆,因为他们经常实现在一起,但他们不一样.开放更重要. 虚函 阅读全文
posted @ 2020-12-16 15:41 zjh6 阅读(13) 评论(0) 推荐(0) 编辑
摘要:#encoding=gbk 定义 f(): 如(1): print("kb") f() 以后还可以继续再改. 阅读全文
posted @ 2020-12-15 19:42 zjh6 阅读(2) 评论(0) 推荐(0) 编辑
摘要:每次,编译都要遇见问题. 先改win32.cpp那个里面的UNICODE宏,去掉,然后改为MD动态库.再编译时,就不会冲突了. 这次编译后,运行: #encoding=gbk 定义 f(): print("kb") f() 没问题了. 注意,在生成的parser.c里面将相应中文,按大小,数字顺序对 阅读全文
posted @ 2020-12-15 15:35 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:这里 阅读全文
posted @ 2020-12-15 11:51 zjh6 阅读(2) 评论(0) 推荐(0) 编辑
摘要:元<型名 F,符 C,型名...A> 空 应用符(F&f,A&&...a){ (f(前向<A>(C,a)),...); }//这样,只需要加上F,然后就可动作了. 阅读全文
posted @ 2020-12-14 21:54 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:想搞,又不成功,或者就是找不到包.或者就是安装不了依赖.你们自己玩吧. 阅读全文
posted @ 2020-12-14 10:17 zjh6 阅读(4) 评论(0) 推荐(0) 编辑
摘要:原地址 前不久,AA大神发起完全转发讨论,发现,有时需要更改函数的属性,如加/减/挂起用户定义属性/存储类,这在我实现开放方法时也努力过.我放在bolts元编程库里面了. 元 前向(别名 函数) { 导入 标.特征:形参; 静 每一( 重载;__特征(取重载,__特征(父,函数),__特征(标识符, 阅读全文
posted @ 2020-12-13 11:00 zjh6 阅读(6) 评论(0) 推荐(0) 编辑
摘要:作者:H. S. Teoh.这是个中国人. 1),尽量避免gc,经常创建的对象,用构,而不是类. 2),用输入的切片,而不是.dup,.idup,读文件,则用std.mmfile,用一个枚指示类型,包装在构中,处理语义/创建语法树时再来转换, 3),尽量避免自动解码,用.byCodeUnit. 参考 阅读全文
posted @ 2020-12-12 11:33 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:@不丢,使忽略返回值为编译错误.作为不能用异常时的补充.避免与通过用返回值报告错误的外部函数对接时的漏洞. 原理: 目前,被调向调用者发送不能忽略信号,只能靠异常,但有时不想/不能用异常.如:用c/c++写代码,其他语言调用d,不想依赖d运行时,不想用异常(太贵了).不丢提供编译时保护,由于所有函数 阅读全文
posted @ 2020-12-12 10:36 zjh6 阅读(8) 评论(0) 推荐(0) 编辑
摘要:如std.stdio,这样可以导入模块名及内部函数. 而import std.stdio : writeln;只导入一个函数名连模块名都没导入. 更像是其他模块的一个函数的别名. 一般用可空/变量来避免异常.然后,用@不弃来注解类型,这样当忘记检查他们时,编译器会警告.同时也不必在函数上注解他们了. 阅读全文
posted @ 2020-12-11 17:59 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:deno没有32位的.自己编译吧. 又说没有rusty_v8.lib,这个玩意儿,还要自己编译,又编译不起.失败了.不过无所谓,有c++就够了.打包出来就有31M的东西,享受不起. js,ts,rust等,实在是享受不了他们. C:\Users\xxx\AppData\Local\Temp这个文件目 阅读全文
posted @ 2020-12-11 11:36 zjh6 阅读(4) 评论(0) 推荐(0) 编辑
摘要:hi DiffChange guibg=white guifg=blue hi DiffText guibg=white guifg=lightRed hi DiffAdd guibg=white guifg=magenta hi DiffDelete guibg=white guifg=blue 阅读全文
posted @ 2020-12-10 20:28 zjh6 阅读(144) 评论(0) 推荐(0) 编辑
摘要:set diffopt=filler,foldcolumn:0 "显示填充行, 表示的,折叠列为0. 阅读全文
posted @ 2020-12-10 17:58 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:整 取下界(向量<整>&大,整 值){//最后两位表区间,即比值刚好>=的东西. 整 i=0,j=大.大小(),o,k,c=j-i; 当(c>0){// k=c/2;o=大[i+k];//k=1 如(o<值){i+=k+1;c-=k+1;}异 c=k; } 中 i; }//向量<T>是从小到大排好序 阅读全文
posted @ 2020-12-09 15:38 zjh6 阅读(86) 评论(0) 推荐(0) 编辑
摘要:其实根本不用后面的折腾,只需要这样: 整 i=-1,j=0;h=0;//h为全局变量 对(动&t:右){//从0开始.表示自身位置. i++;动 p=序.查找(t);如(p==序.尾())下; j=选小(p->第二);如(j 1)下; 压(比,j,i);h=j+1;//我的>=下一个吧. }//选小 阅读全文
posted @ 2020-12-08 17:41 zjh6 阅读(11) 评论(0) 推荐(0) 编辑
摘要:git用起来不爽.可有时又需要版本管理.不然,旧版本没问题,新版本有问题.真是难受. 版本管理的真正目的,是为了迅速找出漏洞.这才是版本管理的作用. 为了实现版本管理.我们得有个当前稳定版.有个差异总历史,有个当前稳定版与提交的各个差异.主要的好处就是我随时可恢复到当前稳定版到最新版的各个差异版.然 阅读全文
posted @ 2020-12-08 15:05 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:一会儿又自动定位到此,你的鼠标又跑到这里了,烦得很. 高亮了一下,又怎么样,烦人的垃圾功能.我要定位时自然知道按F6. 阅读全文
posted @ 2020-12-07 21:12 zjh6 阅读(15) 评论(0) 推荐(0) 编辑
摘要:刚刚看了https://blog.csdn.net/yang_yulei 的史上最简单的红黑树的介绍. 嗯,确实写得好.原来,就是搞不懂红黑树的旋转是干啥的.所以啊,讲得明白的人才是高手.讲得清为啥子的才是高手.我数学还是可以的.结果,以前看了那么多,就是没搞懂. 现在看了它说的,原来红黑树简单得很 阅读全文
posted @ 2020-12-06 22:26 zjh6 阅读(23) 评论(0) 推荐(0) 编辑
摘要:gp,git pull,更新本地为远程 gf,git branch,新建分支 gc,git branch,查看分支,1 ;0代表不接参数,直接执行.用分号表注释,小心逗号 gc,git checkout,切换分支 gm,git commit -m,评论 gz,git status -s,状态,1 g 阅读全文
posted @ 2020-12-06 20:27 zjh6 阅读(19) 评论(0) 推荐(0) 编辑
摘要:今天是5月12,同时也是佛诞日.与2008年地震那次是同 今天是外公的生.去外公家玩.干了少许的活,洗了下碗,看了会电视.叫妖神记,还是好看的.然后看了会书(electron)的,外国人的书,水分都大得很.以后坚决不买外国人的书. 今天还是母亲节,今天真是个特殊的日子啊. 好了,来看看一堆c++编译 阅读全文
posted @ 2020-12-06 16:31 zjh6 阅读(12) 评论(0) 推荐(0) 编辑
摘要:原文地址 可变头结构模式 今天,用户定义类型仍是D中的二等公民.如不支持(头部可变性,能够在不改变引用值的情况下,改变头).本文介绍udt模式来实现它. 介绍 D有一等,二等公民.一等公民有数组和指针,他们可隐式头可变.如,const(T[])可隐式转换为const(T)[]. D有多种转换方法:别 阅读全文
posted @ 2020-12-06 15:59 zjh6 阅读(18) 评论(0) 推荐(0) 编辑
摘要:function! s:get_context() "这里不能乱改 return strpart(getline('.'),0, col('.') - 1) endfunc 这里不能乱改,改错了,就麻烦了. ycm太厉害了,可是不能用. 阅读全文
posted @ 2020-12-06 10:58 zjh6 阅读(10) 评论(0) 推荐(0) 编辑
摘要:元<型名 F,型名...T> 空 向变动作(F&f,向量<变量<T...>>&呀){ 静 常式 整 I=变量大小值<变量<T...>>; 整 i=0;极 要下=0; 对(动&t:呀){//比元组展开灵活点, i=t.索引();//表示这是变量的第几个. 切为编<I>(i,[&](动 k){ 常式 整 阅读全文
posted @ 2020-12-03 17:46 zjh6 阅读(21) 评论(0) 推荐(0) 编辑
摘要:元<类 T,类 F,整...I> 空 猜元组(常 整 i,T&&t,F&&f,序列<I...>){ ((i==I&&((空)f(整常<整,I>{}),0))...); } 元<类 T,类 F> 内联 空 猜元组(常 整 i,T&&t,F&&f){ 常式 动 N=元组大小<退化型<T>>::值; 猜元 阅读全文
posted @ 2020-12-03 16:28 zjh6 阅读(2) 评论(0) 推荐(0) 编辑
摘要:参考地址 为了提供原生数据类似功能/性能.元素直接放实例中,非堆上分配,编译期确定大小,编译器隐式声明构造/析构/赋值操作符. 自动推导数组大小 全局数组作配置参数,但得手动加上大小. 数组 g配置段={1,2,5,6,7,9,3,4}; 数组<正32型>g配置段={1,2,5,6,7,9,3,4} 阅读全文
posted @ 2020-12-01 21:59 zjh6 阅读(27) 评论(0) 推荐(0) 编辑
摘要:元<型名 T,T...N>空 啊(){ 打印(N...); }//只对能够编译通得过的非类型参数,串就不行. 空 主(){ 串 a{"啊"},b{"呀"},c{"呀"}; 啊<整,20>(); 啊<符[2],"啊","哦","呀">(); } 阅读全文
posted @ 2020-12-01 10:22 zjh6 阅读(2) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示