2012-06-16 126 views
1

我已經做了一些研究,但是我沒有找到我的問題的答案。我想知道如何確定C程序中使用的字符集是否爲ASCII。有沒有預處理器常量?如何知道是否使用ASCII碼?

非常感謝。

回答

1

據我所知,ASCII字符集範圍從0到127,其他字符集都在零以下。

+0

UTF-8並非嚴格的「低於零」。任何ASCII也是有效的UTF-8。 –

+0

'char'可以是無符號的,在這種情況下,其他字符在127以上,不低於零。原則上C實現需要使用ASCII值爲0-127,例如,已經有使用EBCDIC的實現。 –

1

它取決於您使用的工具鏈,您可以在工具鏈文檔中找到它。例如,vC++爲unicode構建定義_UNICODE。

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) 
相關問題