Какой аргумент компилятора должен быть предоставлен gcc, чтобы он считал, что это g ++? - PullRequest
2 голосов
/ 29 апреля 2011

Можно ли написать аргумент для gcc так, чтобы он считал его G ++?

Ответы [ 3 ]

5 голосов
/ 29 апреля 2011

Почему вы хотите это сделать?Насколько я знаю, единственное отличие состоит в том, что g++ дополнительно передает -lstdc++ компоновщику, чтобы связать стандартную библиотеку C ++.

Так что, если вы передадите эту опцию в GCC, он должен переслать ее компоновщику, и все должно быть в порядке.Но я действительно не вижу смысла в этом.Просто используйте g++.

Тем не менее, я использовал gcc в прошлом для компиляции кода C ++.Когда у меня была куча файлов, смешанных кодов C ++ и C, я просто компилировал все, используя gcc, потому что g++ по умолчанию обрабатывает .c как код C ++, что нарушает сборку, когда код C использует такие вещи, какnew в качестве идентификаторов.Добавление -lstdc++ всегда работало хорошо.

См. Справочную страницу GCC

Компиляция программ C ++

Исходные файлы C ++ обычно используют один из суффиксов .C, .cc,.cpp, .CPP, .c ++, .cp или .cxx;Заголовочные файлы C ++ часто используют .hh, .hpp, .H или (для общего кода шаблона) .tcc;и предварительно обработанные файлы C ++ используют суффикс .ii.GCC распознает файлы с этими именами и компилирует их как программы на C ++, даже если вы вызываете компилятор так же, как и при компиляции программ на C (обычно с именем gcc).

Однако использование gcc не добавляетБиблиотека C ++.g ++ - это программа, которая вызывает GCC и обрабатывает файлы .c, .h и .i как исходные файлы C ++ вместо исходных файлов C, если не используется -x, и автоматически указывает связь с библиотекой C ++.Эта программа также полезна при предварительной компиляции заголовочного файла C с расширением .h для использования в компиляциях C ++.Во многих системах g ++ также устанавливается с именем c ++.

Когда вы компилируете программы на C ++, вы можете указать многие из параметров командной строки, которые вы используете для компиляции программ на любом языке;или параметры командной строки, значимые для C и родственных языков;или опции, которые имеют значение только для программ на C ++.

3 голосов
/ 29 апреля 2011

В этой документации указано, что для указания языка есть флаг -x:

gcc -x c++ ...
1 голос
/ 29 апреля 2011

«gcc» - это «Коллекция компиляторов Gnu».Если вы передаете ему файл C ++, он вызывает компилятор C ++, «g ++».

Несмотря на это, «gcc» и «g ++» не взаимозаменяемы для файлов c ++.gcc запускает g ++ с несколькими дополнительными аргументами, которые я не могу вспомнить из головы.

Когда вы компилируете файлы c ++, я всегда буду использовать g ++

...