1

調査を行いましたが、質問に対する答えが見つかりませんでした。Cプログラムで使用されている文字セットがASCIIであるかどうかを判断する方法を教えてください。プリプロセッサ定数はありますか?

どうもありがとう。

4

4 に答える 4

2

C さんのコメント:

(C99、5.2.1p1) 「実行文字セットのメンバーの値は実装定義です。」

たとえば、次のようgccに言います。

実行文字セットのメンバーの値 (C90 および C99 5.2.1)。 ABIによって決定

http://gcc.gnu.org/onlinedocs/gcc/Characters-implementation.html

そのgccため、オペレーティング システムのドキュメントを参照してください。

于 2012-06-16T12:28:33.510 に答える
1

使用しているツールチェーンによって異なります。ツールチェーンのドキュメントに記載されている場合があります。たとえば、vc++ は Unicode ビルド用に _UNICODE を定義します。

于 2012-06-16T12:24:57.833 に答える
1

そのためのプリプロセッサ マクロを自分で作成するのは簡単です。次のようなものがうまくいくはずです:

#define HAVE_ASCII (('\x41' == 'A') && ('\x61' == 'a') && ('\x30' == '0'))

#if !HAVE_ASCII
# error "we need ascii"
#endif

細心の注意を払いたい場合は、印刷可能なすべての ASCII をマクロにリストすることもできますが、これだけで EBCDIC と区別するのに十分なはずです。EBDICシステムを使用しているかどうかを判断するだけなら、さらに簡単です:)

#define HAVE_EBCDIC (('Z' - 'A') != 25)
于 2012-06-16T14:19:27.187 に答える
1

私が知っているように、ASCII 文字セットの範囲は 0 ~ 127 で、他の文字セットは 0 未満です。

于 2012-06-16T12:22:23.950 に答える