Ваша заявка отправлена. В ближайшее время мы свяжемся с Вами по указанным контактам.
20800078
Enclosure, Accessory, Coding Pegs Срок поставки 3-4 недели
Поздравляем! Вы получили бесплатную доставку на ваш заказ!
Оформить заказ
Заказанное количество не является кратным. Правильное количество должно быть кратным .
Введите номер вашего мобильного телефона
Нажимая на кнопку «Получить СМС с кодом для регистрации», Вы принимаете условия пользовательского соглашения.
Введите номер вашего мобильного телефона
Нажимая на кнопку «Получить СМС с кодом доступа», Вы принимаете условия пользовательского соглашения.
Введите номер вашего мобильного телефона
Нажимая на кнопку «Получить СМС с кодом доступа», Вы принимаете условия пользовательского соглашения.
Введите номер вашего мобильного телефона
Нажимая на кнопку «Получить СМС с кодом доступа», Вы принимаете условия пользовательского соглашения.
Сохранение профиля
Данные сохранены!
Отменить удаление будет невозможно
Введите название
Запись начинается на строке
12
Предварительный просмотр вашего файла отображается ниже. Ваши столбцы были сопоставлены на основе содержания вашего файла. Пожалуйста, просмотрите выбранные варианты и используйте выпадающие списки над каждым столбцом, чтобы внести какие-либо изменения, а также сопоставить столбцы, которые мы не смогли отобразить автоматически. Требуется столбец как для номера детали, так и для количества.
Куда доставить заказ?
Москва
Добавьте точный адрес, удобный пункт выдачи или постамат, чтобы заранее увидеть условия доставки товаров
Выберите город
С++ — Разница между CC, gcc и g++?
Ответ зависит от платформы; то, что происходит в Linux, отличается от того, что происходит, например, в Solaris.
Простая часть (поскольку она не зависит от платформы) — это разделение «gcc» и «g++»:
gcc — это компилятор GNU C из GCC (коллекция компиляторов GNU).
g++ — это компилятор GNU C++ от GCC.
Сложной частью, поскольку она зависит от платформы, является значение «CC» (и «cc»).
В Solaris CC обычно является именем компилятора Sun C++.
В Solaris cc обычно является именем компилятора Sun C.
В Linux, если он существует, CC, вероятно, является ссылкой на g++.
В Linux cc — это ссылка на gcc.
Однако даже в Solaris cc может быть старым компилятором C на основе BSD из /usr/ucb . На практике это обычно не устанавливается, и есть только заглушка, которая выходит из строя, нанося ущерб тем, кто пытается скомпилировать и установить самонастраивающееся программное обеспечение.
В HP-UX по умолчанию «cc» по-прежнему является компилятором C только для K&R, установленным для разрешения повторной компоновки ядра при необходимости, и непригодным для работы с современным программным обеспечением, поскольку он не поддерживает стандартный C. Вы должны использовать альтернативный имена компиляторов («acc» IIRC). Точно так же в AIX системный компилятор C носит такие имена, как «xlc» или «xlc32».
Обычно системный компилятор по умолчанию назывался «cc», и самонастраивающееся программное обеспечение прибегало к этому имени, когда не знало, что еще использовать.
POSIX попытался законодательно обойти это, потребовав существования программ c89 (изначально), а затем c99; это компиляторы, совместимые со стандартами ISO/IEC 9899:1989 и 9899:1999 C. Сомнительно, что POSIX удалось.
Вопрос касается различий в функциях и библиотеках. Как и прежде, ответ частично специфичен для платформы, а частично — универсален.
Большой разрыв между компиляторами C и компиляторами C++. Компиляторы C++ будут принимать программы C++ и не будут компилировать произвольные программы C. (Хотя можно написать C в подмножестве, которое также понимается C++, многие программы C не являются действительными программами C++). Точно так же компиляторы C будут принимать программы C и отвергать большинство программ C++ (поскольку большинство программ C++ используют конструкции, недоступные в C).
Набор доступных для использования библиотек зависит от языка. Программы C++ обычно могут использовать библиотеки C на данной платформе; Программы C обычно не могут использовать библиотеки C++. Таким образом, C++ имеет больший набор доступных библиотек.
Обратите внимание, что если вы работаете в Solaris, объектный код, созданный CC, несовместим с объектным кодом, созданным g++ — это два отдельных компилятора с отдельными соглашениями для таких вещей, как обработка исключений и изменение имени (и изменение имени преднамеренно отличается, чтобы гарантировать, что несовместимые объектные файлы не будут связаны друг с другом!). Это означает, что если вы хотите использовать библиотеку, скомпилированную с помощью CC, вы должны скомпилировать всю свою программу с помощью CC. Это также означает, что если вы хотите использовать одну библиотеку, скомпилированную с помощью CC, а другую, скомпилированную с помощью g++, вам не повезло. Вы должны перекомпилировать хотя бы одну из библиотек.
С точки зрения качества сгенерированного ассемблера, GCC (GNU Compiler Collection) работает очень хорошо. Но иногда нативные компиляторы работают немного лучше. Я полагаю, что компиляторы Intel имеют более обширные оптимизации, которые еще не воспроизведены в GCC. Но любые подобные понтификации опасны, пока мы не знаем, о какой платформе вы имеете дело.
С точки зрения особенностей языка, все компиляторы в целом достаточно близки к текущим стандартам (C++98, C++2003, C99), но обычно есть небольшие различия между стандартным языком и языком, поддерживаемым компилятором. Поддержка старого стандарта C89 практически одинакова (и полна) для всех компиляторов C. Есть различия в более темных уголках языка. Вам нужно понимать «неопределенное поведение», «определенное системой поведение» и «неопределенное поведение»; если вы вызовете неопределенное поведение, вы получите разные результаты в разное время. Есть также много опций (особенно с GCC) для настройки поведения компилятора. GCC имеет множество расширений, которые упрощают жизнь, если вы знаете, что ориентируетесь только на это семейство компиляторов.
gcc — Почему cc может компилировать программу на C++?
Задавать вопрос
спросил
Изменено
3 года, 6 месяцев назад
Просмотрено
2к раз
У меня есть make-файл для macOS и Linux, который содержит следующую команду:
куб.см -std=С++14 foo.cpp bar.cpp
И компилируется нормально. foo.cpp и bar.cpp , как следует из названия, являются файлами C++ и содержат синтаксис C++11. Компиляция работает нормально.
Теперь, если я включу , я получу сотни ошибок компоновщика. Мне интересно, почему так?
Неопределенные символы для архитектуры x86_64:
"std::__1::locale::has_facet(std::__1::locale::id&) const", на который ссылается:
bool std::__1::has_facet >(std::__1::locale const&) в DiceInvaders-6f5dd4.o
"std::__1::locale::use_facet(std::__1::locale::id&) const", на который ссылается:
...
Afaik, cc ссылается на компилятор c, и я предполагаю, что из-за автоматического обнаружения он компилирует его с помощью компилятора C++. Но почему он терпит неудачу с дополнительным включением C++?
Есть ли аналог cc для c++ в системе? Если я использую g++ , я бы предположил, что команда доступна, и что, если пользователь действительно хочет скомпилировать ее с помощью своего предпочтительного компилятора (как в cc)?
Редактировать: Является ли $(CXX) хорошей заменой куб.см ?
c++
gcc
g++
clang++
cc
6
Скорее всего, cc в вашей системе является символической ссылкой на исполняемый файл gcc .