なぜファイル末尾に改行を入れるのか - Qiita
という感じらしくて、C 規格のドラフトを見ても知らんぞ的なことが書いてある。
例えば http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf がC11 のドラフトらしいのだが、5.1.1.2 Translation phases を見ると
A source file that is not empty shall end in a new-line character, which shall not be immediately preceded by a backslash character before any such splicing takes place.
とある。DeepL によると「空ではないソースファイルは、改行文字で終わらなければならず、その改行文字の前にバックスラッシュ文字があってはならない。」ということである。ということで VS Code の設定をしておこう。というか gti diff
の表示がうるさい。
さて、POSIX の定義なんて見たことないなと思ったので、unix - Why should text files end with a newline? - Stack Overflow を参考にDefinitions を見ると
3.206 Line
A sequence of zero or more non-characters plus a terminating character.
と書いてある。自力でここに到達できる気がしない・・・。