2013-02-28 59 views
3

我在64位Linux(2.6.39-gentoo-r3),GCC版本4.6.3 上编译我的项目,但是当我编译时,警告包含一些不可读的字符。就像下面这样:如何解决海湾合作委员会警告中的混乱信息

warning: field precision specifier ?.*?.expects argument of type ?.nt?. but argument 6 has type ?.ong int?.[-Wformat] 
warning: format ?.u?.expects argument of type ?.nsigned int?. but argument 7 has type ?.ize_t?.[-Wformat] 
warning: ignoring return value of ?.ystem?. declared with attribute warn_unused_result [-Wunused-result] 

虽然我可以猜出这些杂乱的部分,但它们看起来很糟糕。那么是否有人遇到同样的问题或知道如何解决它?

回答

1

通常gcc使用ASCIIUTF-8编码输出。检查你的终端,找出它实际配置的编码。

作为一个快速的解决方法,尝试以这种方式运行gcc的命令,看是否可以看到有效的字符(它使用ASCII这里):

LC_ALL=C LANG=C gcc ... 

如果能解决问题,你的locale是要么不配置正确或至少不是你想要的。

要列出您的系统支持所有的地区:

eselect locale list 

基于this指南,你需要在你的.bashrc设置LC_ALLLANG变量来配置你的区域从上面的列表中选择一个(我猜你的情况是en_US.UTF-8)。

+0

我试过了,它不能很好地工作。我的命令是:$ LC_ALL = C LANG = C gcc -c -fPIC -g3 -Wall -Wno -unused -D_DEBUG_LOGGING -D_GNU_SOURCE -I。 -Itest test_main.c test_main.c:in function?.ain ?. test_main.c:34:20:警告:初始化使得指针中的整数不发生转换 test_main.c:51:5:警告:字段精度应该有类型?.nt ?.但参数2有类型?.ong unsigned int? test_main.c:51:5:warning:format?.. * s?.expect type?.har * ?.但参数3的类型是?.nt? – Hijack 2013-03-01 03:03:34

+0

顺便说一句,我的本地内容是:LANG =的en_US.UTF-8 LC_CTYPE = “的en_US.UTF-8” LC_NUMERIC = “的en_US.UTF-8” LC_TIME = “的en_US.UTF-8” LC_COLLATE = C LC_MONETARY = “的en_US.UTF-8” LC_MESSAGES = “的en_US.UTF-8” LC_PAPER = “的en_US.UTF-8” LC_NAME = “的en_US.UTF-8” LC_ADDRESS = “的en_US.UTF-8” LC_TELEPHONE =“en_US.UTF-8” LC_MEASUREMENT =“en_US.UTF-8” LC_IDENTIFICATION =“en_US.UTF-8” LC_ALL = – Hijack 2013-03-01 03:06:09

1

最终解决了这个问题。我发现这是我的XSHELL 的问题通过将XSHELL设置为UTF8,它工作正常。感谢大家 !

相关问题