6

Kernighan と Ritchie C のリファレンスを何年も持っていませんでしたが、利用できない文字を入力する方法について説明したページがそこにあったことを覚えています。(昔は、一部のキーボードには "、~ などの文字がありませんでした。)

わかりやすくするために、例を挙げましょう。文字列で引用符を取得する方法を探しているのではなく、これを置き換えたい:

printf("foo");

これとともに:

printf([alternate sequence]foo[alternate sequence]);

興味深いことに、私は C/C++ コードの生成を含む自動化されたプロセスを持っていますが、(クローズド ソースの) 商用ツールにはデータ ストリーム内の引用符が含まれていません。彼ら。

編集:

うわー、私はそのような重い反応を期待していませんでした。これは、私のプロセスをもう少し詳しく説明する価値があるかもしれません。私は自動化されたビルド システムを行っています。つまり、コンパイルしているコードの変更に関しては、一定の制限があります。今のところ、文字列、スペース、およびすべてをプリプロセッサの定義に入れる必要があるという前提で生活する必要があります。私はすでに「PreprocessorDefinition」の道を進んでいます。これにより、通常のフォールバックが残りました。動作環境で文字列を定義し、そこからプロジェクト ファイルに定義を設定します。

Preprocessor Definitions     WIN32;_DEBUG;THINGIE=$(THINGIE)

ビルド自動化スクリプトで次のようなことを行うことで、トリグラフを使用して /D でビルドに渡されたものすべてで MSVC の引用符の削除を回避できることを願っていました。

ENV['THINGIE'] = "??''Yodeling Monkey Nuggets??''"
run_msbuild_command

プランCの時期だと思います。

4

6 に答える 6

10

キャラクターのトリグラフをお探しですか?"存在しないと思います。

トライグラフはすべてのキャラクターに存在するわけではありません。トリグラフ シーケンスを持つ文字はごくわずかです。

于 2010-02-05T18:03:36.107 に答える
9

規格通りなし。マクロを使用してヘッダーを含めてみてください。

 #define QUOTE(x) #x

次のように生成しprintfます。

 printf(QUOTE(hello));
于 2010-02-05T18:05:01.600 に答える
4

あなたはトリグラフを考えています

 Character   Trigraph
 [           ??(
 \           ??/
 ]           ??)
 ^           ??'
 {           ??<
 |           ??!
 }           ??>
 ~           ??-
 #           ??=

しかし " はリストにありません

于 2010-02-05T18:04:57.560 に答える
3

trigraphsについて話していると思います。私が読んだ限りでは、" という文字はありません。

于 2010-02-05T18:04:00.107 に答える
0
しかし、(クローズド ソースの) 商用ツールには、データ ストリーム内の引用符が取り除かれ、文書は引用符をエスケープする方法を提供していないという事実を明確に示しています。

くだらないツールのように聞こえます。

見栄えが悪いですが、次のようなことを試すことができます。

static const char foo[] = {'H', 'e', 'l', 'l', 'o', 0};

printf(foo);

マクロで使用するというダークジェントリーの提案も気に入って#いますが、それはスペースでどのように機能するのだろうか?

于 2010-02-05T18:15:35.857 に答える