Язык программирования C 1978
«C-это язык программирования общего назначения, который показывает экономику выражения, современный поток управления и структуры данных и богатый набор операторов. C не является языком« очень высокого уровня », ни« большой », и не специализируется на какой-либо конкретной области применения. Но его отсутствие ограничений и его общность делают его более удобным и эффективным для многих Tasks, чем предполагаемых более сильных языков».
«По нашему опыту, C оказался приятным, выразительным и универсальным языком для широкого спектра программ. Его легко выучить, и он хорошо носит свой опыт работы с ним».
Язык программирования C Второе издание 1988
«Как мы сказали в предисловии к первому изданию, C» хорошо носит свой опыт с ним.
Торт-это фронтальный компилятор, написанный с нуля в C, придерживающийся спецификации языка C23 и за его пределами. Он служит платформой для экспериментов с новыми функциями, включая предложения C2Y языка, повышение безопасности и расширения, такие как выражения Lambda и отчеты.
Текущий бэкэнд генерирует C89-совместимый код, который может быть заполнен существующими компиляторами для производства исполняемых файлов.
Cake стремится повысить безопасность C путем предоставления высококачественных предупреждающих сообщений и расширенного анализа потока, включая проверки времени жизни объекта.
Это лучший способ попробовать.
http://thradams.com/cake/playground.html
Примечание: торт все еще находится в разработке и еще не достиг стабильной версии.
Торт можно использовать в качестве статического анализатора вместе с другими компиляторами. Он генерирует файлы SARIF, которые распознаются популярными IDE, такими как Visual Studio и Visual Studio Code, обеспечивая бесшовную интеграцию.
Он также может функционировать как препроцессор, преобразующий код C23 в C89. Это позволяет разработчикам использовать современные функции, нацеливаясь на компиляторы, которые еще не поддерживают последние языковые стандарты.
Предыдущие версии торта включали режим преобразования для перевода кода при сохранении частей препроцессора. Хотя это полезно, этот процесс не может гарантировать 100% конверсию, функционируя больше как инструмент, чем компилятор. С новыми версиями торта, движущиеся в сторону стать более традиционным компилятором, предыдущий режим был прекращен в версии 0.9.36. Эта версия онлайн здесь http://thradams.com/cake3/playground.html.
Github https://github.com/thradams/cake
Откройте командную строку разработчика Visual Studio. Перейдите в каталог SRC и тип
cl build.c && build
Это построит Cake.exe , а затем запустит торт на своем собственном исходном коде.
Добрался до каталога SRC и типа:
gcc build.c -o build && ./build
Добрался до каталога SRC и типа:
clang build.c -o build && ./build
Чтобы запустить модульные тесты Windows/Linux, добавить -dtest, например:
gcc -DTEST build.c -o build && ./build
Emscripten https://emscripten.org/ требуется.
Сначала сделайте нормальную сборку.
Нормальная сборка также генерирует файл lib.c , который является объединенной версией «Core Lib».
Затем в ./SRC Dir Type:
call emcc -DMOCKFILES "lib.c" -o "Webcake.js" -s WASM=0 -s EXPORTED_FUNCTIONS="['_CompileText']" -s EXTRA_EXPORTED_RUNTIME_METHODS="['ccall', 'cwrap']"
Это генерирует src web cake.js
Убедитесь, что торт находится на вашем системном пути.
Образцы
cake source.c
это выведет ./out/source.c
См. Руководство
Как мы сюда попали?
Копия каждого стандартного черновика C в папке Docs .
Очень хорошее введение было написано Аль Уильямсом
C23 программирование для всех
https://hackaday.com/2022/09/13/c23-programming-for-everyone/
Вы можете внести свой вклад, попробовав торт, сообщив об ошибках и отзыв.
Есть предложение для C?
Discord Server
https://discord.gg/yrekr2n65s
Я использую Visual Studio 2022 IDE для написания/отладки источника торта. Торт анализирует себя с использованием включения MSVC, и он генерирует DIR после сборки.
Я использую код Visual Studio с WSL для тестирования и компиляции кода для Linux.
Исходный код пирога не использует никакого расширения, поэтому вывод одинаково от ввода. Эта компиляция полезна для ошибок отслеживания вместе с модульными тестами.
CFRNT был исходным компилятором C ++, предназначенным для перевода кода C ++ в C.
Хотя CFRNT изначально был совместимой с C89, в конечном итоге он расходился от эволюции C.
Напротив, торт остается верным основным развитию C, обеспечивая полную совместимость.
Его расширения направлены на сохранение сущности C, позволяя разработчикам экспериментировать и внести свой вклад в эволюцию C, используя компилятор с открытым исходным кодом, написанный в C.