Не могу скомпилировать простую программу на C++, используя g++

Когда я пытаюсь скомпилировать любой c++ программа с использованием g++ Я получаю следующую ошибку, трассировка стека очень длинная, это всего лишь пример:

........... 
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\330’ in program
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\330’ in program
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\340’ in program
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\5’ in program
/usr/include/x86_64-linux-gnu/bits/byteswap.h:47:2: error: stray ‘\260’ in program
In file included from /usr/include/endian.h:60:0,
                 from /usr/include/ctype.h:39,
                 from /usr/include/c++/4.8/cctype:42,
                 from /usr/include/c++/4.8/bits/localefwd.h:42,
                 from /usr/include/c++/4.8/ios:41,
                 from /usr/include/c++/4.8/ostream:38,
                 from /usr/include/c++/4.8/iostream:39,
                 from post_test_5.cpp:1:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:1:1: error: expected unqualified-id before numeric constant
/usr/include/x86_64-linux-gnu/bits/byteswap.h:11:2: error: expected unqualified-id before numeric constant
In file included from /usr/include/endian.h:60:0,
                 from /usr/include/ctype.h:39,
                 from /usr/include/c++/4.8/cctype:42,
                 from /usr/include/c++/4.8/bits/localefwd.h:42,
                 from /usr/include/c++/4.8/ios:41,
                 from /usr/include/c++/4.8/ostream:38,
                 from /usr/include/c++/4.8/iostream:39,
                 from post_test_5.cpp:1:
/usr/include/x86_64-linux-gnu/bits/byteswap.h:26:31: error: expected declaration before ‘}’ token

И пример кодаpost_test_5.cpp:

#include<iostream>

int main() {

  std::cout << "Hello World" << std::endl;
  return 0;
}

И я пытаюсь запустить его так:

g++ -c post_test_5.cpp

мой gcc Версия и версии Ubuntu:

gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) 
kirill@kirill-ThinkPad-X140e:~/CPlusPlusStuff/PostTest$ lsb_release -d
Description:    Ubuntu 14.04 LTS

Тем не менее, когда я использую gcc команда для компиляции .c файл все работает правильно.

Что может быть причиной этого?

1 ответ

Решение

Это похоже на (по крайней мере) файл /usr/include/x86_64-linux-gnu/bits/byteswap.h были как-то повреждены. Откройте его в текстовом редакторе и проверьте, выглядит ли он как обычный заголовочный файл C++.

В этом случае переустановите пакет libc6-dev с помощью команды sudo apt-get --reinstall install libc6-dev

Если это не так, вам нужно будет разместить здесь полное содержимое файла post_test_5.cpp, а также полный вывод компиляции.

Другие вопросы по тегам