如何知道是否使用ASCII?

时间:2012-06-16 12:17:42

标签: c character-encoding ascii

我做了一些研究,但我找不到问题的答案。我想知道如何确定C程序中使用的字符集是否为ASCII。是否有任何预处理器常量?

非常感谢。

4 个答案:

答案 0 :(得分:2)

C说:

  

(C99,5.2.1p1)“执行字符集成员的值是实现定义的。”

例如gcc说:

  

执行字符集成员的值(C90和C99 5.2.1)。   由ABI确定

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

所以gcc指向操作系统文档。

答案 1 :(得分:1)

据我所知,ASCII字符集的范围是0到127,其他字符集的范围是零。

答案 2 :(得分:1)

它取决于您使用的工具链,您可以在工具链文档中找到它。例如,vc ++为unicode build定义_UNICODE。

答案 3 :(得分: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)