03 2022 档案
摘要:import std.stdio; void main() { alias DelegateT = string delegate(); // 每个有自己域的闭包数组. DelegateT[] funcs; foreach (i; ["ham", "cheese"]) { // 在闭包域中复制 st
阅读全文
摘要:void f() { version (foo) fVersionFoo(); else fDefault(); } void fVersionFoo() { /* ... */ } void fDefault() { /* ... */ } 然后,对每个函数测试.
阅读全文
摘要:协程线程池 如何等待协程完成 协程表示懒任务,完成任务时恢复协程,从而获取任务返回值. 以线程中执行任务为例,来看如何定制协程机器的"零件"来实现等待并获取任务返回值: 任务<大小型>读文件(){ 常 动 结果=协待 异步读文件{"../主.c++"}; 协中 结果.大小(); } 整个流程大概这样
阅读全文
摘要:等待--恢复,等待是挂起,协程执行完,再恢复.类似烧开水. c++20协程几个基本概念: 可恢复类型 用于恢复协程类型,对应协程就是协程返回类型,调用者可通过它恢复协程,也可通过内部承诺型拿到协程返回值. 承诺类型 主要用来保存协程值,如果需要恢复协程时,需要通过承诺类型拿到协程句柄,再调用它的恢复
阅读全文
摘要:元<型名 T>构 承诺; 元<型名 T> 构[[未丢弃]]任务{ 用 承诺类型=承诺<T>; 任务()=默认; ~任务()=默认; T&&取结果(){ 中 承诺->取结果(); } 任务(承诺<T>*承诺):承诺{承诺}{} 私: 承诺<T>*承诺=空针; }; 元<型名 T> 构 承诺{ ~承诺(
阅读全文
摘要:.uukjsi6a_zpZccrqYiI3k 上面这个为百家号的类名.搞笑不? 禁用F12,怎么办? 点F5,再快速按F12,多试几次,调用出来.
阅读全文
摘要:auto p=(LPCWSTR)pStr; 要求,你转换一下. AeroDrawText(dc, "哈哈", &rClient,...) 原来的哈哈前面有个L,去掉它. LOGFONT*转LOGFONTW*,加个(LOGFONTW*)就行了.不折腾.
阅读全文
摘要:class Serializable(Derived, Base = Object) : Base { static if (is(Base : Serializable!(Base, C), C)) { override void serialize(...) { serializeImpl();
阅读全文
摘要:struct Options { @Alt("n") // `-n`来替代`--name` @Help("名的帮助") string name; } 用独立正交uda,使更可读. struct T { @(NamedArgument .PreValidation!((string s) { retu
阅读全文
摘要:import std.stdio; import dmd.backend.aarray; //使用后端的AA,只需要aarray.d一个就够了. import zencoding.windows949; struct Make_CP949Table(T) { private AArray!(Tinf
阅读全文
摘要:struct Test { int32_t a; } struct Test2 { int32_t a; Test arr[]; } 我想静态初化测试2,然后传递给外部c库. extern(C) struct Test { int a; } extern(C) struct Test2 { int
阅读全文
摘要:#define NTDDI_VERSION 0x06030000 #define _WIN32_WINNT 0x0A00 #define WINVER 0x0A00 或这样: #define WINVER 0x0501 #define _WIN32_WINNT 0x0601 #define _WIN
阅读全文
摘要:当然是自己的.出现了,很多问题.主要问题就是串不能转成串&.也就是说生成的串要单独写个串 a=F(...),再调用f(..,a,..).折腾! 编译过了.然后就是运行.一下就出来一个大小不匹配. 这真是,一直找.C++的提示太少,你根本不知道,是哪个函数调用了这个断定,然后抛异常. 还有就是,串规则
阅读全文
摘要:无法将参数 1 从“std::string”转换为“std::string &”
阅读全文
摘要:协待可帮助完成. 构 任务{ 构 承诺类型{ 任务 取中对象(){中{协程句柄<任务::承诺类型>::从承诺(*本)};} 从不挂起 初始挂起(){中{};} 从不挂起 止挂起()无异{中{};} 空 中空(){} 空 未处理异常(){} }; 协程句柄<任务::承诺类型>句柄_; }; 构 等待器
阅读全文
摘要:co_await expr co_await(协待)是C++20新关键字.上面表示等待懒求值任务.不希望该任务阻塞调用者,用协待挂起任务.调用者继续.任务完成后,协待返回协程的结果.有两个作用:挂起协程及取协程返回值. 协待等待任务时,不阻塞调用者,就是协程化异步为同步的关键. 协待类似调用函数.对
阅读全文
摘要:原文 协程化异步网络库是大势所趋. c++20协程是无栈协程,提供了: 1,三个(协待(co_await),co_yield和co_return)新关键字 2,几个新类型:coroutine_handle,coroutine_traits<T...>,suspend_always,suspend_n
阅读全文
摘要:位置 主要有:懒/执行器/生成器/批操作/协程锁/协程条件变量/有栈协程等组件. 简单回声示例 简单异步::协程::懒<空> 会话(传控::套接字 套接字){ 对(;;){ 常 大小型 最大长度=1024; 符 数据[最大长度]; 动[错误,长度]=协待 异步读些(套接字,异网::缓冲(数据,最大长
阅读全文
摘要:import std.stdio, std.range; string[] data = [ "Pazartesi", "Pazar"];//... auto toWchar(string str) { ...略//没啥用. } void main() { foreach(date; data) {
阅读全文
摘要:L1: foreach (...) { ... switch (auto ret = 重构代码(...)) { case 1: break L1; case -1: continue; }//这样来实现`断/下`. ... } 我写了个CP949转换表,别人建议用shared static this
阅读全文
摘要:int printf(char *, ...); int main() { printf("%d\n", (int)sizeof("a")); }//串字面大小. 接着 // test1.c int printf(char *, ...); int main() { int a = 0; // dm
阅读全文
摘要:template T(int i=3) { mixin template M(int m) { enum t = i; } } { mixin T!1.M!1; pragma(msg, t); // 1 } { mixin T!().M!1; pragma(msg, t); // 3 } { mix
阅读全文
摘要://raylib.c: #include "raylib.h" //main.d: void main() { import raylib; InitWindow(640,640,"ImportC的raylib测试"); // 循环 CloseWindow(); } 编译: gcc -E rayli
阅读全文
摘要:import core.stdc.stdio; class A { void visit(int a){ printf("A - int\n");} void visit(float b) { printf("A - float\n");} } mixin template Bmix(AST) {
阅读全文
摘要:参考这里 先从gitee拉取soui2. 点击soui.08.sln文件. 在mhook项目属性中加上WINDOWS_IGNORE_PACKING_MISMATCH宏.不然有负下标错误. 然后F7编译,就成功了.
阅读全文
摘要:原文 import std; void main() { ubyte[65536] buf; char[] usable_buf = cast(char[]) buf[]; usable_buf.formattedWrite!"Blah %d blah %s"(123, "Это UTF-8 стр
阅读全文
摘要:fun! Hbf0(a,r=1,h=1) "合并分开的,如`ui命令`的`界面命令`分开了.要合并回来.r为右边为`界面0命令`=>`0界面命令` "两个极判断. let[a,b,c]=Tmr(a:a,3,'^') let e=b.c let e=Qhj(a:r,e,'\1') let ml='g/
阅读全文
摘要:import core.stdc.stdio; extern(C): //import std.stdio; mixin template A(int I){ void f(){ printf("%i",I*2); } } mixin template C(int I){ void b(){ pri
阅读全文
摘要:import core.stdc.stdio; extern(C++): //import std.stdio; class A(int I){ void f(){ printf("%i",I*2); } } interface C(int I){ final void b(){//要有个终.不然不
阅读全文
摘要:1,少写了编译时参数, 元<类 T,类 F>构 AA{//少写了个F 2,F,T,O参数写错了. 3,O&...t写错了3次. 4,串应为极,写错了. 5,用函数<>时,单独的函数名,不能有重载,否则无法推导. 6,未实现相关函数. 7,继承类看不见父类的多个函数,真是有病.C++的简洁,就被这些人
阅读全文
摘要:元<常符*c>构 串字典:公 小字典{ 串字典(){串 b=基路径(c);初化(b);} };//基路径. 用 AA=串字典<"aa.txt"y>; 现在,可基于文件,作为参数,来使用字典.
阅读全文
摘要:元<整 I>构 AA{// AA(){ 打印(I); } }; 元<整 I,整 J>构 AA{// AA(){ 打印(J,I); } }; 空 主(){ AA<3>a;AA<4,5>b; } 编译不过,不能当作AA的相同分支,第2个AA要改成其他如BB,才能编译过. 而D不存在: import co
阅读全文
摘要:元<整 N>构 元串{ 符 p[N]{}; 常式 元串(常 符(&pp)[N]){ 区间们::复制(pp, p); }; }; 元<元串 A>常式 动 符号""y(){中 A.p;} //作为模板串的串,为元串. 空 主(){ 用 T=TT<"aa.txt"y>; T t; }
阅读全文
摘要:太强大了!可以用串作参数. 元<常 符*m>构 B{ B(){//只能放基路径. 串 b=m;...; } }; 空 f(){ 静 常 符 c[]="aa.txt";用 T=B<c>; BB<T>e;... } 空 主(){ f(); }
阅读全文
摘要:function ff(){ var a=q('article.article-main'); jl0(a,'fold'); jl(a,'unfold'); }//body > div > article setTimeout("ff()",1000);
阅读全文
摘要:原文 前面的同步,用的是共针来共享同步/承诺,中值是置该值就拿到协程返回值了. 用T,而承诺用其引用,也可以. 还可让,同步持有协程句柄,取时从句柄的承诺中返回值.止挂起返回永不挂起,则立即释放协程,此时,要返回总是挂起. 元<型名 T>构 同步1{ 公: 构 承诺类型; 同步1(协程句柄<承诺类型
阅读全文
摘要:空 gg(h,k){ 动 f=[&](整 m){ ... };// 动 g=[&](整 m,整 n){ ... };//短语,原,这里函数不能用静 动. λ函数(f,g,h,k); } 看见没有,这是祸害.有λ引用问题, 怎么样搞定呢?搞个类,用两个虚函数作接口,填充它. 保护://继承者要实现 虚
阅读全文
摘要:add_includedirs("D:\\smartwin\\include") add_links("SmartWin") add_linkdirs("D:\\smartwin\\lib") add_cxxflags('/w','/EHsc','/Zc:strictStrings-','/Gy',
阅读全文
摘要:原文 import std.stdio; import std.algorithm : find, filter; import std.conv : to; import std.uni : isNumber; void main(string[] args){ if (args.length >
阅读全文
摘要:xmake -f /tmp/xxx.lua xmake --file=xxx.lua 最简单: -- 添加名为`demo`的目标到工程 target("demo") -- 设置目标程序类型为二进制,一般为`控制台`的终端`命令行`程序 set_kind("binary") -- 添加`src`目录下
阅读全文
摘要:v2.0.1 任务,插件,导出工程,生成文档,自定义宏脚本,类库, 绑定宏选项,简化模板 可扩展性:插件/工程模板/平台/架构/动作/选项/任务/宏脚本都可扩展. 目标:实现一人移植,万人使用. 增加了键值风格: target { name = "test", defines = "DEBUG",
阅读全文
摘要:交叉编译 一般sdk目录里面有include/lib/bin,只需要: $ xmake f -p linux --sdk=/home/toolchains_sdkdir $ xmake 就可交叉编译.特殊的可以: $ xmake f -p linux --sdk=/home/toolchains_s
阅读全文
摘要:target("a") set_kind("binary") add_files("*.cpp", "*.mpp") set_targetdir('.') //放在当前目录,直接就可运行了,不用xmake run a //xmake.lua 模块: #include <cstdio> export
阅读全文
摘要:v2.5.4 支持Apt,Portage add_requires("apt::zlib1g-dev", {alias = "zlib"}) target("test") set_kind("binary") add_files("src/*.c") add_packages("zlib") 导出导
阅读全文
摘要:v2.3.1 1,无缝交叉编译. 2,用xmake project -k ninja生成ninja构建配置. 添加socket,pipe模块,改进process模块.重构进程调度器,并行调度构建.重构协程模块,准备远程和分布式编译. 生成后,用$ ninja构建. 无xmake.lua,可调用其他构
阅读全文
摘要:原文 32生成的代码更小,在设计PCB,硬件接口和开发驱动程序方面更简单,更节能,体积更小,运行温度更低,运行速度更快,且更便宜的组件. 我工作的过去十年,只有一个使用64位微控器的项目.其余都是32位和两个或三个8位设备.有个运行atm的8位项目,非常有趣! 调查了D,不幸,当时不适合微控器开发,
阅读全文
摘要:struct MockFile { [...] void writef(alias fmt, A...)(A args) { // 函数要求,弃用了的`双环境` import std.format: format; write(format!fmt(args)); } [...] } unittes
阅读全文
摘要:工具链都有相应include/lib目录,有类似: - bin - 工具 - 工具 - ... - lib - libxxx.a - include - xxx.h 结构.则可以用: $ xmake f -p cross --sdk=/home/toolchains_sdkdir 来编译了.-p c
阅读全文
摘要:01 下载发布版 可xmake update来自动更新. 02创建和编译工程 xmake create创建各语言的空工程. 默认为C++,生成 add_rules("mode.debug", "mode.release") //可选,两种构建模式 target("test") //子工程模块 set
阅读全文
摘要:示例 target("demo") -- 构建库时,禁止 if has_config("onlylib") then set_default(false) end -- 加依赖 add_deps("xmake") -- exe set_kind("binary") -- 加定义 add_define
阅读全文
摘要:原文 add_rules("mode.debug", "mode.release") target("console") set_kind("binary") //二进制. add_files("src/*.c") if is_mode("debug") then add_defines("DEBU
阅读全文