Забавный шрифт в сообщениях сборки в Codeblocks с использованием g ++ - 4 (Cygwin) в качестве компилятора - PullRequest
2 голосов
/ 01 октября 2011

Я использую 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 ===|

Iне знаю, почему CodeBlocks печатает символы и т. д.Есть ли способ для CodeBlocks правильно отображать символы?

Ответы [ 2 ]

2 голосов
/ 02 октября 2011

Cygwin по умолчанию использует кодировку UTF-8, в то время как похоже, что CodeBlocks предполагает, что вывод находится в CP1252. Более того, поскольку Cygwin сообщает, что доступен UTF-8, gcc использует отдельные левую и правую версии символов кавычек вместо обычных ASCII. Результатом является то, что вы видите. Есть два способа решения этой проблемы: либо скажите CodeBlocks использовать UTF-8, либо скажите gcc придерживаться ASCII, установив LANG=C. Я не знаю, как сделать что-то из этого в CodeBlocks.

0 голосов
/ 27 февраля 2014

Добавьте следующую переменную среды на ваш компьютер:

LANG=C

В Windows 7 вы можете добавить его, выбрав «Компьютер»> «Свойства»> «Дополнительные параметры системы»> «Переменные среды», затем «Новый ...». Меню должны быть похожими в Windows XP.

Я надеюсь, что можно ответить на старый вопрос. Это случилось и со мной сегодня, и мне потребовалось некоторое время, чтобы это исправить.

...