C编程语言1978
“ C是一种通用的编程语言,具有表达经济,现代控制流和数据结构以及丰富的操作员。C不是一种“非常高的”语言,也不是一种“大”语言,并且并不专门针对任何特定的应用领域。但是它的缺乏限制及其一般性及其对许多任务更具功能更强大的任务。”
“根据我们的经验,C已被证明是多种程序的一种令人愉悦,表现力和多才多艺的语言。它很容易学习,并且随着人们对其的经验的增长而磨损”
C编程语言第二版1988
“正如我们在第一版的序言中所说的那样,c“随着人们对它的体验的磨损。“经过十年的经验,我们仍然有这种感觉。”
Cake是Compiler在C中从头开始写的编译器前端,遵循C23语言规范及其他内容。它是实验新功能的平台,包括C2Y语言建议,安全性增强和扩展名,例如Lambda表达式和延期陈述。
The current backend generates C89-compatible code, which can be pipelined with existing compilers to produce executables.
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 add -dtest例如:
gcc -DTEST build.c -o build && ./build
需要emscripten https://emscripten.org/。
首先执行正常构建。
普通构建还生成了“ core lib”的合并版本的文件lib.c。
然后在./src dir类型:
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标准草稿的副本。
艾尔·威廉姆斯(Al Williams)撰写了非常好的介绍
每个人的C23编程
https://hackaday.com/2022/09/13/c23-programming-for-everyone/
您可以通过尝试蛋糕,报告错误并提供反馈来做出贡献。
有建议吗?
Discord服务器
https://discord.gg/yrekr2n65s
我正在使用Visual Studio 2022 IDE来编写/调试蛋糕来源。蛋糕是使用MSVC的包含的,并且在构建后会生成Out Dir。
我将带有WSL的Visual Studio代码用于测试和编译Linux代码。
蛋糕源代码不使用任何扩展名,因此输出的输出相同。此汇编可用于跟踪误差以及单位测试。
Cfront是原始的C ++编译器,旨在将C ++代码转换为C。
尽管CFRONT最初与C89兼容,但最终与C的进化不同。
相比之下,蛋糕与C的核心开发保持忠实,以确保完全兼容。
它的扩展旨在保留C的本质,同时允许开发人员使用用C.