Shift_JISに対応したコンパイラが円記号をバックスラッシュとみなすのは規格に適合していますか
Shift_JISには(いわゆる半角の)バックスラッシュ記号は存在せず、
ASCIIにおいてバックスラッシュの割り当てられたコード位置に円記号が存在します。
Shift_JISでエンコードされたソースコードに対応したC/C++コンパイラは、
私の知る限りいずれもこの円記号をバックスラッシュと同一視して解釈しますが、
これは規格に適合した動作でしょうか。
例えば "¥n"
とあった場合、これは「円記号とn」として解釈されるべきであって、
ラインフィードとして解釈するのは規格上正しくないのではないかと疑問に思いました。
規格に合致させるのであれば、バックスラッシュが存在しないShift_JISにおいては、
代替としてトライグラフ ??/
のシーケンスのみがバックスラッシュとして解釈されるのが
正しいのではないのでしょうか。
それともISOやJISなどの規格で、ASCIIのバックスラッシュと同一のコード位置にある記号は
バックスラッシュとして解釈する、というような規定でも存在するのでしょうか。
コンパイラの実装や慣例ではなく、規格を厳密に解釈した場合の回答を頂きたいです。