<
C/C++ コード ファイル内のすべての文字をエンコードする必要があります。競合を防ぐために、C/C++ 標準で予約されていない文字を知る必要があります。たとえば、$
が予約されていない場合は、一時的にエンコード<
して$
、元の C/C++ コードを後で復活させることができます。
XML に似た中間言語で C/C++ コードをエンコードするには、このエンコードが必要です。
前もって感謝します。
予約されていない文字 (無限に存在します) をリストするのではなく、標準の 2.3.1 からの予約文字を次に示します。
スペース、水平タブ、垂直タブ、改ページ、改行 a から z A~Z 0 ~ 9 _ { } [ ] # ( ) % : ; . ? * + - / ^ & | 〜!= , \" '
すべての<
文字を$
に変換する場合、元のファイルのインスタンスをどのように保存$
しますか?
XMLのような中間言語をターゲットにしていると言っているので、代わりにXMLエスケープを使用して変換<
してみません<
か?&
(その場合は、たとえば、に変換する必要もあります&
。)これを行うのに役立つオープンソースライブラリがたくさんあります。スタンドアロンモジュールが見つからない場合は、XML(非)エスケープ機能を抽出できるコードを作成しました。
「予約済み」の意味によって異なります。実装は、入力内の非常に限られた数の文字を理解するためにのみ必要であり、他のすべての文字はユニバーサル文字名によって入力されます。実装はより多くをサポートすることが許可されています (そして私はそれが推奨されています)。§2.2 のポイント 1 を参照してください。実際には、コメント、文字列および文字リテラル (少なくともワイド文字形式、C++11 では Unicode 形式)。あなたの最善の策は、おそらく引用された印刷可能なものです。