現象
gcc -o hello -c hello.c
warning: no newline at end of file
解決辦法
在源文件最後一行(通常是 } 後)按下 Enter 鍵,新增一個空行。即:文件必須以換行符結尾。
原理分析
- C 標準(ISO/IEC 9899)要求源文件每一行以換行符結尾,最後一行也不例外。
- GCC 遵循標準,檢測到文件末尾缺少換行符時發出警告。
- 某些編輯器(如 Windows 記事本舊版)保存時不自動添加末尾換行,導致此警告。
最佳實踐
- 配置編輯器「保存時確保文件以換行符結尾」(VS Code:
files.insertFinalNewline, Vim: 默認開啟)。
- 將其納入代碼規範,CI 流程中用
git diff --check 或 clang-format 攔截。
- 理解這不是「錯誤」,但消除警告有助於保持編譯輸出乾淨,專注真正問題。