11

В чём разница между g++ и gcc?

8

В чем разница между g++ и gcc? Какой из них следует использовать для общего разработки на C++?

5 ответ(ов)

5

GCC: GNU Compiler Collection

GCC (GNU Compiler Collection) — это набор компиляторов, поддерживающий различные языки программирования, такие как C и C++.

  • gcc: компилятор для языка C
  • g++: компилятор для языка C++

Основные отличия:

  1. gcc компилирует файлы *.c как C и *.cpp как C++ соответственно.
  2. g++ компилирует файлы *.c и *.cpp, но все они будут рассматриваться как файлы на C++.
  3. Если вы используете g++ для линковки объектных файлов, он автоматически подключает стандартные библиотеки C++ (в то время как gcc этого не делает).
  4. gcc, компилируя C файлы, имеет меньше предопределенных макросов.
  5. При компиляции *.cpp с помощью gcc и *.c, *.cpp с помощью g++, доступны несколько дополнительных макросов.

Дополнительные макросы при компиляции *.cpp файлов:

#define __GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1
#define __private_extern__ extern

Если у вас есть конкретные вопросы по использованию gcc и g++, не стесняйтесь спрашивать!

1

Для C++ вам следует использовать g++.

Это один и тот же компилятор (например, часть GNU Compiler Collection). GCC и G++ просто выбирают разные фронтенды с различными значениями по умолчанию.

В nutshell: если вы используете g++, фронтенд сообщит компоновщику, что вам может понадобиться связать вашу программу с библиотеками стандартного C++. Фронтенд gcc этого не сделает (хотя он может связать с ними, если вы передадите правильные параметры командной строки).

0

Одно из заметных различий заключается в том, что если вы передаете файл с расширением .c компилятору gcc, он будет скомпилирован как C. В то же время, по умолчанию g++ обрабатывает файлы с расширением .c как C++ (если не указано -x c).

0

Хотя команды gcc и g++ выполняют очень похожие задачи, g++ специально предназначена для компиляции программ на C++. Она нацелена на то, чтобы автоматически делать правильные вещи.

Под капотом эти две команды на самом деле представляют собой одну и ту же программу. Как я понимаю, обе команды определяют, как компилировать программу - как на C или как на C++ - в зависимости от расширения файла. Обе команды могут связываться с стандартной библиотекой C++, но только g++ делает это по умолчанию. Таким образом, если у вас есть программа на C++, которая не требует связывания со стандартной библиотекой, gcc выполнит правильные действия; но тогда и g++ тоже. В итоге, нет никаких причин не использовать g++ для общего развития на C++.

0

GCC и G++ — это оба компилятора от GNU. Они компилируют C и C++, но есть важные различия в их работе с файлами. Когда вы компилируете файлы с расширением *.c, GCC обрабатывает их как программы на C, тогда как G++ рассматривает их как программы на C++. Файлы с расширением *.cpp всегда считаются программами на C++.

C++ является надмножеством C, и синтаксис в C++ более строгий, поэтому следует быть внимательным при выборе суффикса для файлов. Это означает, что если вы используете функции или конструкции, специфичные для C++, в файле с расширением .c, вы можете столкнуться с ошибками компиляции при использовании G++. Рекомендуется использовать G++ для файлов на C++, чтобы избежать неожиданных проблем.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь