概要
懐かしい話題が流れてきたので、ちょっと実験してみました。
記事

SJISでコーディングしてはいけない、たった一つの理由 - Qiita
ダメ文字を意識しながらコーディングしなければならないからです。 ダメ文字とは? Shift_JISのダメ文字 ダメ文字一覧表 例 a.c # include void func(int x){ // 与えられた変数を表示するだけの機能 .....
C言語だと行末の\は次の行に続く文字として利用されています。Shift_JISで2文字目に\が入っている文字を使うと意図しない動作をするって話ですね。懐かしい。
実験コード
#include <stdio.h>
int main() {
// 今後実装する機能
if(0)
{
printf("cannot run\n");
}
printf("exit\n");
return 0;
}
よくある開発中の処理はif分でブロックコメントかわりにしているコードです。これをShift_JISで保存して各種コンパイラで動きをみてみます。
WSL(gcc)

はい、gccは意図したとおり変な動きをします。これはオプションなしだとShift_JISに対応していないので、漢字の2文字目かを判定していないんですよね。
gcc test.c -finput-charset=cp932
もちろん文字コードを指定すれば正しく動きます。
Build Tools for Visual Studio 2022(cl)

すばらしい、ちゃんとShift_JIS対応しているので漢字の場合には2文字目を無視する設定になっています。
LSI C試食版(lcc)
LSI C-86の詳細情報 : Vector ソフトを探す!
LSI C-86 v3.30c 試食版
上記からダウンロードできます。

しかし16ビットアプリなので64ビットWindows環境では実行できません。
DOSVAXJ3
上記にあるDOS/V Emulatorを使って実行したいと思います。事前にLSIC86というフォルダ名にlsic330c.lzhを解凍しておきます。

なんとコンパイルエラーです。
LSI C-86 の特長
^^^^^^^^^^^^^^^
・ANSI に準拠
ANSI C 規格案(X3J11)に準拠したフルセットコンパイラです
そうです、LSI C-86はANSI Cに対応しているコンパイラです。おそらくC89とかですね。
C99から//がコメントとして使えるようになったので、この時代のコンパイラは/* */で囲う必要があります。
まとめ
ちなみにこんな動きがあったのでShift_JISから一気にutf8に文字コードが変わっていったりしていました。そして//のコメントが使いたいのでC++の機能を使わないのに拡張子をcからcppに変更していた時代のお話です。



コメント
gccは対応してないのでは無く、Shift_JISとして処理してないからそうなっているだけです。
-finput-charset=cp932で文字コードを指定してあげればちゃんと解釈します。
コメントありがとうございます
追記しておきました