C編程語言1978
“ C是一種通用的編程語言,具有表達經濟,現代控制流和數據結構以及豐富的操作員。C不是一種“非常高的”語言,也不是一種“大”語言,並且並不專門針對任何特定的應用領域。但是它的缺乏限制及其一般性及其對許多任務更具功能更強大的任務。”
“根據我們的經驗,C已被證明是多種程序的一種令人愉悅,表現力和多才多藝的語言。它很容易學習,並且隨著人們對其的經驗的增長而磨損”
C編程語言第二版1988
“正如我們在第一版的序言中所說的那樣,c“隨著人們對它的體驗的磨損。“經過十年的經驗,我們仍然有這種感覺。”
Cake是Compiler在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 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.