当前位置: 首页 > news >正文

做网站 科目战略咨询公司排名前十

做网站 科目,战略咨询公司排名前十,深圳公司注册地址变更,网站建设Z亿玛酷1流量订制对象工厂替代方案 一般,需要无需用模块构造器触发d运行时的挑剔循环检测的方法来注册工厂.很多时候,混合模块构造器正是想要方法,但它有全局全开或全闭的循环检测算法. 要全局关闭它,请在Main文件中,添加以下代码行: extern(C) __gshared string[] rt_options [oncycl…对象工厂替代方案 一般,需要无需用模块构造器触发d运行时的挑剔循环检测的方法来注册工厂.很多时候,混合模块构造器正是想要方法,但它有全局全开或全闭的循环检测算法. 要全局关闭它,请在Main文件中,添加以下代码行: extern(C) __gshared string[] rt_options [oncycleignore];或运行程序时传递--DRT-oncycleignore开关. 但是,如果正在制作库,则可能不想全局关闭它,因为会破坏事物.你想要更局部的方法. 唉,D当前的模块构造器没有提供在局部说这很好,相信我的方法.可在模块信息构造器列表中添加新数组来实现它,根据是否标记循环安全,来分离它们. 目前,编译器组合模块的所有静态构造器到一个调用所有构造器的生成函数中.然后ModuleInfo引用此生成函数,以便初化时druntime调用它.需要两个生成函数,一个取当前行为,另一个顺序无关运行. 应该添加它到语言中. 但是今天可做什么呢? 好吧,用ldc或gdc,可在自定义链接器节中放引用函数,如果看看ModuleInfo实现,它也是这样.(在某些平台上,它查找可执行文件中的.minfo节,在其他平台上,它发出调用特定的D注册函数的crt构造器).但是crt构造器如何实现的呢?通过带指针的链接器节! 事实上,用crt构造器是一个可能.发出其中一个,它会构建一个列表,然后稍后从普通D模块构造器调用该列表.不过,必须小心从crt构造器调用的内容,-druntime已出来了,甚至C运行时的其他部分,可能还没有完全初化,可能还有共享库加载锁. 有个优先级编号,但D禁止你设置该编号.即使你可以设置,它也不能解决所有问题.我相信当前的实现确实可让你侥幸调用realloc,所以这是可相当安全构建列表方式.只要不乱搞,你没事. 但,我想深入链接器节.转储代码: module sections.demo; import core.internal.elf.io; import sections.demo2;//用此注册处理器 mixin template Register(alias fn) {import ldc.attributes;section(.mytest) __gshared void function() registered fn; }//必须注册挂名来欺骗链接器,在此搞一个 void specialCtor() {import std.stdio;writeln(hello special ctor); } mixin Register!specialCtor;// impl来取它 alias SectionDataHandler void function(scope const(ubyte)[] data);int findSectionInfo(SectionDataHandler handler) {import core.internal.elf.dl;SharedObject exe SharedObject.thisExecutable();ElfFile file;if(!ElfFile.open(exe.name.ptr, file))return 1;foreach(index, name, sectionHeader; file.namedSections) {if(name .mytest) {if(auto offset sectionHeader.shdr.sh_addr) {auto beg exe.baseAddress offset;auto size sectionHeader.shdr.sh_size;auto data beg[0 .. size];//愚蠢无用的NOGC限制我,仅当体为NOGC,可标记NOGCalias BypassAttribute void function(scope const(ubyte)[]) nogc nothrow;(cast(BypassAttribute) handler)(cast(ubyte[]) data);} else {// 未映射}}}return 0; }void main() {import std.stdio;// 从列表中调用函数static void handler(scope const(ubyte)[] data) {//必须引用神奇节中的一个变量,否则--gc-sectionsarg默认链接器会去掉它!auto reference registered;reference();auto fns cast(void function()[]) data;foreach(fn; fns) {// 不要重复调用根引用if(fn is reference)continue;fn();}}writeln(findSectionInfo(handler)); }还有第二个文件注册了: module sections.demo2; import sections.demo; void otherCtor() {import std.stdio;writeln(here too); }mixin Register!otherCtor;注意,我用了ldc.attributes,所以该演示只是LDC,但gdc.attributes工作方式相同,所以可很容易地支持这两个编译器.不过,DMD现在没用. 编译并运行它(仅在Linux上测试!也应该在BSD上运行,但Mac和微软等需要进一步调整): $ ldc2 -icore.internal.elf sections.d sections2.d ./sections hello special ctor here too 0注意,我用-icore.internal.elf来引入该ElfFile类型.否则,不会在构建中包含它(编译器假定,因为它是druntime的一部分,它预编译在库中,但也可能没有这些指定的,加它至构建使它更易工作). 否则,只需基本编译和运行,就运行了. 在此基础上创建东西,就像如果注册了一个变量,可自动生成附加它到数组的函数.或,可设置该节自身为特定类型而不是函数列表,且直接不运行就用它;链接器节只是提前连接的静态数据,因此无需进一步操作,可切片并转换为另一个类型并用它. 甚至可这样注册http路由等,且知道在可执行文件中查找哪个节的特定检查器,甚至可不运行程序就打印出它们! 可用静态数据做很多很酷的,可执行文件节是进入该世界的窗口.
http://www.w-s-a.com/news/824848/

相关文章:

  • 资阳市建设局网站微信开发公司
  • wap建站程序源码可不可以异地建设网站
  • 优秀企业网站的特点网站标签名词
  • 建材网站建设案例淄博网站建设培训
  • 纯代码添加wordpress网站底部导航宝塔自助建站源码
  • 网站设计技术有哪些?青岛网站建设工作室
  • 网站怎样建设才叫人性化宣传
  • 济南网站制作方案做淘客网站备案
  • h5企业网站只做做php门户网站那个系统好
  • 长春阿凡达网站建设建网站如果不买域名别人能不能访问
  • 佛山网站建设策划东莞建设工程交易网
  • 制作公众号网站开发濮阳建网站
  • 屏南网站建设兼职旅游网站建设方案两百字
  • 最牛的网站建设网站建设的规模设想
  • 马云之前做的网站企业形象策划
  • ie9网站后台编辑器代发qq群发广告推广
  • 百度怎样建立一个网站嘉兴高端网站定制
  • 国外设计网站怎么进入电子网站建设前台设计
  • 中方建设局网站济南网站建设公司电子商务网站
  • 如何做网站编辑 沒技术济南企业做网站推广网站
  • 网站模板 百科北京中高风险地区最新名单最新
  • 高校网站建设前言做公众号的公司是什么公司
  • 网站备案怎么登陆短视频培训学校
  • 百度图片点击变网站是怎么做的北京市建设工程质量监督站网站
  • 在线建站模板重庆网站建设大概需要多少钱
  • 建设网站公司电话号码wordpress 即时通讯
  • 网站设计用的技术拓者吧室内设计网app
  • 河北seo优化_网络建设营销_网站推广服务 - 河北邢台seo网站建设运行情况报告
  • 建设银行内部网站6画册设计是什么
  • 网站建设什么价格网站下拉菜单怎么做