首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/699286

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

为clang添加中文关键字

知乎原文地址 作者:@狗屎咖啡 以clang为基础做了一个与C++、C兼容中英文关键字的编译器 swizl/cnlang 原理就是加与英文关键字等效的中文关键字 在/include/clang/Basic/TokenKinds.def 中 用ALIAS添加中文关键字 例如 KEYWORD(char, KEYALL) ALIAS("字", char, KEYALL) 在 /lib/Basic/IdentifierTable.cpp 中 加个头文件 #include "llvm/ADT/StringSwitch.h" 在 tok::PPKeywordKind IdentifierInfo::getPPKeywordID() const 里 用 llvm::StringSwitch 添加 中文宏 例如 //default: return tok::pp_not_keyword; default: return llvm::StringSwitch<tok::PPKeywordKind>(Name) .Case("如", tok::pp_if) .Case("定义", tok::p...

如何使GCC支持中文(utf-8)的变量名、函数名?

知乎原文地址 作者:@狗屎咖啡 目前VS 和Clang都是支持utf-8的变量名、函数名,但 GCC不支持。 有人提意见,提了好几年了:UTF-8 support for identifier names in GCC GCC并没有解决,但官方给了一个解决方案:FAQ - GCC Wiki 就是用这样一条脚本语句转换一下源文件 perl -pe 'BEGIN { binmode STDIN, ":utf8"; } s/(.)/ord($1) < 128 ? $1 : sprintf("\\U%08x", ord($1))/ge;' 这条语句的意思是将源文件按utf-8读取出来,大于128的unicode(不在ASCII里)都用16进制的Uxxxxxxxx的格式替代。 这种格式叫UCN。 实际上gcc内部还是将UCN转换成utf-8字符串,再加到符号表。却不支持原生的UTF-8符号,这个就有点搞笑了。 虽然有人会说,C、C++的标准里没有对UTF-8符号的支持,GCC不支持UTF-8符号是符合标准的。但是GCC从来就不是死守标准的乖宝宝对吧,加了不少扩展了。为啥这个不能扩展一下呢?...

相关文章

发表评论

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册