Иногда нужно быстро проверить работоспособность какой-то идеи или алгоритма. Хорошо, когда у вас Linux и какая-то система из семейства Unix с установленным компилятором (имхо, в 90% случаев это будет правдой), вам просто нужно открыть консоль вызвать vim/emacs/joe/mcedit/etc набросать программку и вызвать компилятор. Но иногда вы в гостях/командировке/интернет-кафе, в общем тогда, когда компилятора нет под рукой, но есть доступ в интернет. Тут помогут онлайн-компиляторы.
Отправной точкой можно взять ресурсы:
Из перечисленных там, мне понравились нижеперечисленные.
Лидеры
Лидеры моего внутреннего рейтинга. На основе развития за все годы существования этой заметки.
-
https://wandbox.org/
Мой фаворитНе совсем. Работает как-то медленно. Чаще https://cpp.sh запускаю (см ниже)- Плюсы:
- Самые свежие версии компиляторов (см. ниже) и, соответственно, самые свежие версии стандартов.
- Gcc/Clang/Zapcc на выбор и много вариантов версий
- Удобный выбор версий стандарта (C++)
- Доступен Boost разных версий и дополнительные библиотеки типа Sprout и MessagePack
- Можно задать дополнительные опции компилятору (“Compiler options”)
- Уже можно задать опции командной строки для приложения (“Runtime options”)
- Можно передать программе STDIN
- Можно создавать дополнительные текстовые файлы (например для программ, читающих из файлов). При этом, можно хитро извернуться и использовать WandBox как IDE: эти файлы могут быть исходниками, проосто печислите их в параметрах компилятора ;-)
- Несколько языков
- Можно шарить код
- Автоматически сохраняет код между запусками браузера
- Быстрый запуск по Ctrl+Enter
- Минусы
- Нет студийного компилятора
- На момент “конец октября 2024”: интерфейс стал очень тормозным
-
http://coliru.stacked-crooked.com
- Плюсы:
-
C++20, можно поиграться с параметром
-std=XXX
-
Последняя версия компилятора
-
Можно выбрать компилятор: см минусы
- А выбрать только так, вместо команды билда указать:
ls /usr/local/bin/*g++* /usr/bin/*g++*
- Итого, на август 2023:
g++
- актуальная версия (13)g++-4.7
g++-4.8
g++-4.9
g++-5.1
g++-5.2
g++-5
clang++
- 5 версияclang++-5
- А выбрать только так, вместо команды билда указать:
-
Можно задать параметры сборки
-
Автоматически сохраняет код между запусками браузера
-
Можно использовать для шаринга кода (внизу кропка Share)
-
Можно передать параметры программе через аргументы командной строки
-
Можно передать программе STDIN используя трюк Shell:
g++ -std=c++20 -O2 -Wall -pedantic -pthread main.cpp && ./a.out << EOF Hey! I am stdin! EOF
-
Много шоркатов
-
- Минусы:
- Небольшой выбор компиляторов и версий и хакерский путь поиска оных
- У меня пару раз не работал.
- Язык только (?) C/C++
- Плюсы:
-
http://gcc.godbolt.org/ -
тут укажу один минус сразу: он только компилирует, но не выполняет код иотображает ассемблерный листинг, что удобно для анализа всяких оптимизаций.- Плюсы:
- Много разных компиляторов и их версий: gcc (4.4-4.8), arm-gcc (4.5-4.6), avr-gcc (4.5), mps430-gcc (4.5), clang (3.0), icc (13.0.1)
- Показывает ассемблерный выход
- Можно задать параметры компиляции
- Можно шарить код
- Мегатулза для анализа сгенерированного кода
- На момент “август 2023” уже умеет выполнять код (не для всех компиляторов), для этого нужно нажать в окне ассемблерного выхлопа иконку с “+” и выбрать пункт “Executor From This”. Далее можно задать как параметры коммандной строки, так и данные на STDIN.
- Минусы:
- Для меня - больше нет :)
- Субъективно: выполнение кода появилось, но всё же удобнее использовать его как инструмент анализа и оптимизации.
- Плюсы:
-
https://cppinsights.io/ - ещё один сервис уровня godbolt, но! Он показывает во что могут разворачиваться синтаксические конструкции, типа лябдб и, к примеру,
идиомы “overload”
- Плюсы:
- Все актуальные стандарты
- Помогает разбираться в тонкостях и нюансах
- Минусы:
- Не вижу, но смотреть особенности
- Особенности:
- Это не компилятор в прямом смысле слова. Он не запускает программу, не читает файлы, аргументы и т.п. Он нужен что бы развернуть синтаксические конструкции в простые, примитивные конструкции языка, более доступные для понимания.
- Плюсы:
Прочие
Которыми раньше пользовался, но которые по каким-то причинам ушли из моих фаворитов.
-
http://cpp.sh/
- Особенности (ни плюс, ни минус, а данность):
- Код собирается на сервере через emscripten в WebAssemply code, который уже выполняется непосредственно в браузере
- Плюсы:
- Короткое и лаконичное имя :-)
- C++98, C++11, C++14, C++17, C++20, C++23 - по выбору (GCC 4.9.2)
- Различные уровни оптимизации: O0, O1, O2, O3
- Поддержка предупреждений: Wall, Wextra, Wpedantic
Boost 1.55 (больше никто не предоставляет)- Можно шарить код
Ввод через стандартный ввод: интерактивный (этого нет ни у кого больше) и текстсм минусы- Сразу большое окно редактора
- Минусы
- Только C++
- Нет работы с файлами
- Не понимает завершения процесса по сигналу
- Больше нет возможности передать параметры коммандной строки
- Больше нет возможности передать STDIN
- Особенности (ни плюс, ни минус, а данность):
-
http://ideone.com
- Август 2023: не открывается
- Плюсы:
- C++14 стандарт (компилятор gcc 8.2 и clang 8.0)
- Можно шарить код + оставить аннотацию к нему (нажать “More options”)
- Можно задать данные которые отошлются на STDIN программы
- Минусы:
- Нельзя задать параметры сборки
- Нельзя передать параметры командной строки
- Других стандартов C++ нет (С++98/03, C++11, C++17, C++20)