使用g ++ - 4(Cygwin)作为编译器在Codeblocks中构建消息中的有趣字体

时间:2011-10-01 13:24:21

标签: g++ cygwin codeblocks

我正在使用CodeBlocks 10.05和Cygwin 1.7来编译一些C ++代码。操作系统是WinXP SP3。使用的编译器是g ++ 4.5.3。

当我构建以下程序时:

#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main()
{
    unsigned long long a = 12345678901234;
    printf("%u\n",a);
    return 0;
}

它在构建日志中输出以下内容:

C:\Documents and Settings\Zhi Ping\Desktop\UVa\143\main.cpp||In function ‘int main()’:|
C:\Documents and Settings\Zhi Ping\Desktop\UVa\143\main.cpp|9|warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘long long unsigned int’|
C:\Documents and Settings\Zhi Ping\Desktop\UVa\143\main.cpp|9|warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘long long unsigned int’|
||=== Build finished: 0 errors, 2 warnings ===|

我不知道为什么CodeBlocks打印出“等”符号。 CodeBlocks有没有办法正确显示字符?

2 个答案:

答案 0 :(得分:2)

Cygwin默认使用UTF-8编码,而看起来CodeBlocks假设输出在CP1252中。此外,由于Cygwin告诉它UTF-8可用,gcc使用单独的左右版本的引号字符而不是通常的ASCII字符。结果就是你所看到的。有两种方法可以解决这个问题:要么告诉CodeBlocks使用UTF-8,要么通过设置LANG=C告诉gcc坚持使用ASCII。我不知道如何在CodeBlocks中执行这些操作。

答案 1 :(得分:0)

将以下环境变量添加到您的计算机:

LANG=C

在Windows 7中,您可以通过转到计算机&gt;添加它。属性&gt;高级系统设置&gt;环境变量,然后是“新......”。 Windows XP中的菜单应该类似。

我希望能回答一个老问题。今天也发生在我身上,我花了一些时间才解决它。