c – 为什么要使用预处理器指令进行“案例”声明?
发布时间:2020-12-16 03:19:33 所属栏目:百科 来源:网络整理
导读:我正在浏览SpiderMonkey引擎源,并在解释器中看到一些令我感兴趣的代码. // Portable switch-based dispatch.# define INTERPRETER_LOOP() the_switch: switch (switchOp)# define CASE(OP) case OP:# define DEFAULT() default: (来源:https://dxr.mozilla.
我正在浏览SpiderMonkey引擎源,并在解释器中看到一些令我感兴趣的代码.
// Portable switch-based dispatch. # define INTERPRETER_LOOP() the_switch: switch (switchOp) # define CASE(OP) case OP: # define DEFAULT() default: (来源:https://dxr.mozilla.org/mozilla-b2g44_v2_5/source/js/src/vm/Interpreter.cpp#1579) 定义类似案例OP的任何非风格的好处:作为CASE(OP)? 解决方法
Look up半屏:
#if (defined(__GNUC__) || (__IBMC__ >= 700 && defined __IBM_COMPUTED_GOTO) || __SUNPRO_C >= 0x570) // Non-standard but faster indirect-goto-based dispatch. # define INTERPRETER_LOOP() # define CASE(OP) label_##OP: // ... <snip> #else // Portable switch-based dispatch. # define INTERPRETER_LOOP() the_switch: switch (switchOp) # define CASE(OP) case OP: // ... <snip> #endif GCC和其他一些编译器支持“computed goto”,即faster than a loop-switch for an interpreter loop,但是是非标准的,因此不可移植. 如果编译器支持计算的goto,则#if的第一个分支定义了INTERPRETER_LOOP,CASE(OP)等,以使用计算的goto;否则,#else分支根据标准设施来定义它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- C#使用iTextSharp封装的PDF文件操作类实例
- 学习oracle 入门第一课后的笔记记录
- c – 缩短字符串时std :: string :: resize和std :: string
- c# – 调试性能问题的最佳方法是什么?
- 缺少Swift 3变异函数(‘… inPlace’方法)
- ruby-on-rails – Rails 3:fields_for在编辑视图中显示空白
- 使用vb.net 获取文件夹下选中文件的文件名称
- ajax – 从Google Analytics(分析)中刮下实时访问者
- Swift3.0拨打电话,获取通话状态(接通,挂断...)<CoreTelepho
- 正则表达式 – 打开vim文件,光标在第一个搜索模式匹配(类似