首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析PintOS未识别字符\x16

如何解析PintOS未识别字符\x16
EN

Stack Overflow用户
提问于 2017-08-13 04:07:55
回答 2查看 4.5K关注 0票数 6

我下载并设置了PintOS和我的家用计算机上的依赖项,但是当我试图运行pintos run alarm-multiple时,我得到了错误:

Unrecognized character \x16; marked by <-- HERE after if ($<-- HERE near column 7 at ~/code/pintos/src/utils/pintos line 911.

该行上有^V,这是同步空闲控制字符。我还没有找到关于这个问题的任何信息,似乎只有我一个人在经历这个问题。

我安装了Perlv5.26.0。

EN

回答 2

Stack Overflow用户

发布于 2017-08-13 11:22:32

在Perl5.20中使用不推荐变量名称中的文字控制字符。

变量名中的文字控制字符 这种弃用会影响像$\cT这样的东西,其中\cT是源代码中的文字控件(例如NAKNEGATIVE ACKNOWLEDGE字符)。令人惊讶的是,最初这似乎是作为访问像$^T这样的变量的规范方式,而插入符号表单只是作为一种替代方式添加的。 文本控制表单被废弃有两个主要原因。它有一些可能是不可修复的错误,比如$\cI不作为$^I的别名,而且它们的使用不能移植到非ASCII平台:虽然$^T在任何地方都能工作,但\cT是EBCDIC中的空白。perl #119123

导致此问题的代码在2016年用PintOS和此承诺进行了修正:

提交人Ben blp@cs.stanford.edu Tue,2016年2月9日04:47:10 +0000 (20:47-0800)现代版本的Perl更喜欢变量名中的插入符,而不是文字控制字符,如果使用控制字符,则发出警告。这修正了警告。diff --git a/src/utils/pintos b/src/utils/pintos索引1564216.2 was 642 100755 (可执行文件)-- a/src/utils/pintos +++ b/utils/pintos @@ -912,7 +912,7 @subget_load_average{调用setitimer设置超时,然后执行传递给我们的内容。子exec_setitimer { if (定义$timeout) {- if ($\16 ge 5.8.0) {+ if ($^V ge 5.8.0) { eval“使用时间:HiRes qw(setitimer ITIMER_VIRTUAL);setitimer (ITIMER_VIRTUAL,$timeout,0);

Perl5.26 使在变量名称中使用文字控制字符成为致命错误。

修复它的方法是确保您使用的是最新版本的pintOS。命令git clone git://pintos-os.org/pintos-anon应该这样做。

票数 12
EN

Stack Overflow用户

发布于 2017-08-13 05:25:53

^V珀尔瓦。由于我不知道的原因,它不是作为^ V编码的,而是作为单个unicode字符编码的,这导致程序失败。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45656966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档