以下是一段简单的C语言代码,不过特别之处是使用了中文标识符。
#include <stdio.h>
int main(int 参数数量, char* 参数值[])
{
int 循环数;
for(循环数=0; 循环数<参数数量; 循环数++)
{
printf("参数%d:%s\n", 循环数, 参数值[循环数]);
}
return 0;
}
这段代码在VC和llvm下能够顺利编译通过,我想也有人希望gcc也能编译通过,不过现实却是最新版本的gcc也不支持中文标识符,同时也没看到官方将来会增加此功能,在编译的过程中则会产生如下的错误。
$ gcc test.c
test.c:3:1: 错误:程序中有游离的‘\345’
int main(int 参数数量, char* 参数值[])
^
test.c:3:1: 错误:程序中有游离的‘\217’
test.c:3:1: 错误:程序中有游离的‘\202’
test.c:3:1: 错误:程序中有游离的‘\346’
test.c:3:1: 错误:程序中有游离的‘\225’
test.c:3:1: 错误:程序中有游离的‘\260’
test.c:3:1: 错误:程序中有游离的‘\346’
为了解决gcc对中文标识符的支持问题,本人对gcc进行了修改,在完全不影响原有功能的情况下,实现了中文标识符的支持。CentOS 7用户可以通过linux9981软件仓库安装编译好的gcc。安装使用只需要几个简单步骤。
1、配置linux9981软件仓库
wget -O /etc/yum.repo.d/linux9981.repo <a target=_blank href="http://rpm.linux9981.com/linux9981.repo">http://rpm.linux9981.com/linux9981.repo</a>
yum install gcc -y
3、编译测试代码
将本文开头的那段测试代码保存为test.c,然后编译
gcc -o gcc中文标识符测试 test.c
4、执行测试程序,运行结果如下
$ ./gcc中文标识符测试 你好 中文
参数0:./gcc中文标识符测试
参数1:你好
参数2:中文
linux9981.com提供了CentOS 7下的二进制包,相信也有人需要在其他系统下使用,如需要重新编译,可以下载源rpm包,下载地址如下:
http://rpm.linux9981.com/rpms/gcc/4.8.2-16.2.chs.el7/gcc-4.8.2-16.2.chs.el7.linux9981.com.src.rpm