3

(Это не вопрос об ошибке компиляции, а настройка терминала Linux.)

Во время любой ошибки компиляции оператор ошибки неправильно отображает фрагменты кода:

In member function â:
error: â was not declared in this scope

Есть ли настройка, чтобы мой терминал правильно показывал:

In member function `foo()':
error: `endl' was not declared in this scope

Дополнительная информация: Это правильно отображается в режиме компиляции Emacs, но даже сохранение этого буфера во временный файл и чтение его в командной строке приводит к появлению вышеуказанных символов. Чтение этого файла в Vim показывает, что странные символы представляют более одного столбца текста.

2 ответа2

2

Я думаю, что вы должны сначала проверить настройки локали с:

locale

Если он не выровнен с набором символов файла, то вы можете получить ошибки, как таковые.

file yoursrcfile

должен предоставить вам необходимую информацию.

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

export LC_ALL=en_US

для вашей сессии Bash. Это также может быть размещено перед командой компиляции. например

LC_ALL=en_US gcc -o outfile srcfile.c

Но эффект в этом случае будет только на последующую команду.

Другой случай, что, возможно, ваш исходный код, возможно, был отредактирован в Windows? Во всяком случае, он может содержать некоторые странные символы по какой-то причине.

Вы должны проверить это в Vim, включив, чтобы показать все символы

:set invlist

Надеюсь это поможет!

0

Если переменная окружения LANG

LANG=en_US.UTF-8

затем в меню перевода окна PuTTy, в

«Полученные данные, в которых предполагается набор символов», выберите

"UTF-8".

или установите LANG просто

LANG=en_US

или же

unset LANG

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .