메뉴 건너뛰기


Developer > Open Source

APR 7장. ctype 함수들

2013.11.16 00:15

푸우 조회 수:14071

기본 C라이브러리에서 ctype.h에 정의된 is~()함수들이 있습니다.
그 중에서 파라미터로 문자 한자를 입력받아 그 문자가 숫자인지 기호인지 아스키 기호 인지 등등을 판단하는 함수가 있습니다.
이것들을 APR에서 아래와 같이 재 정의 하였습니다.
 
#define  apr_isalnum(c)   (isalnum(((unsigned char)(c)))) 
#define  apr_isalpha(c)   (isalpha(((unsigned char)(c)))) 
#define  apr_iscntrl(c)   (iscntrl(((unsigned char)(c)))) 
#define  apr_isdigit(c)   (isdigit(((unsigned char)(c)))) 
#define  apr_isgraph(c)   (isgraph(((unsigned char)(c)))) 
#define  apr_islower(c)   (islower(((unsigned char)(c)))) 
#define  apr_isascii(c)   (((c) & ~0x7f)==0) 
#define  apr_isprint(c)   (isprint(((unsigned char)(c)))) 
#define  apr_ispunct(c)   (ispunct(((unsigned char)(c)))) 
#define  apr_isspace(c)   (isspace(((unsigned char)(c)))) 
#define  apr_isupper(c)   (isupper(((unsigned char)(c)))) 
#define  apr_isxdigit(c)   (isxdigit(((unsigned char)(c)))) 
#define  apr_tolower(c)   (tolower(((unsigned char)(c)))) 
#define  apr_toupper(c)   (toupper(((unsigned char)(c)))) 
그런데 가만히 보면 특별할게 없어 보입니다. ^^
차이점이라면 파라미터를 (unsigned char)로 캐스트 하여 넘겨준다는 차이점이 있네요.
ctype 에 있는 표준 함수들은 입력 문자가 0x00 – 0x7F까지의 값인 즉, 7비트문자는 정상적으로처리하지만 8비트 문자에 대해서는 어떤식으로 처리된다는 정의가 되어 있지 않습니다.
이에 대한 문제를 없애기 위해서 모든 문자를 부호없는 8비트 문자로 캐스팅해서 전달하여 혼란이 없게 하고 있네요.
 
뭐 그리 중요한 내용은 아닙니다.
이번 장은 간단히 이정도로 패스... ^^
 
이런게 있다고만 기억하죠. 뭐.
 
 
 
Creative Commons License
Creative Commons License이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Copyright 조희창(Nicholas Jo). Some rights reserved. http://bbs.nicklib.com