2013-04-15 1 views
3

C99C11wchar_t과 멀티 바이트 기능을 지원합니다. 그러나 ANSI C (1989)에 대해서는 확실하지 않습니다.wchar_t 및 multibyte 함수는 ANSI C의 일부입니까?

는 그 wchar_t 및 멀티 기능 (mblen, mbstowcs, mbtowc, wcstombs, wctomb) ANSI C의 일부를 맞습니까?

Kernighan and Ritchie (C 프로그래밍 언어 (2 판))에서이 기능을 찾을 수 없습니다.

http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628

+0

어쩌면 당신은 책의 1 판 (1978 년)이있을 것입니까? – pmg

답변

3

이름 wchar_t은 C89 (및 C99) 표준에 속하지만 이름이 아닌 지원되는 유형입니다. 필수 비트 수를 보유 할 수있는 일부 정수 유형의 경우 typedef입니다. C89 7.1.6 [일반 설명]을 말한다

wchar_t를
값 범위 지원되는 로케일 중 지정된 최대 확장 문자 세트의 모든 멤버에 대한 고유 한 번호를 대표 할 수있는 일체형이다 ; null 문자는 코드 값이 0이어야하고 기본 문자 5.2.1에 정의 된 각 구성원은 정수 문자 상수의 외손 문자로 사용될 때 값과 동일한 코드 값을 가져야합니다.

이것은 누군가가 너무 오래 <stddef.h>#include D되지 않았습니다으로 C89에 원하는 수 wchar_t을 정의 할 수 있다는 것을 의미한다.

C++에서 이것은 잘못되었습니다. wchar_t는 해당 언어의 키워드입니다.


참조한 멀티 바이트 함수는 C89의 일부인 것처럼 보입니다. 7.10.7 절 [멀티 바이트 문자 기능]에서는을 정의합니다. 물론 C89에 const이 없기 때문에 이러한 기능의 const - 정식 버전을 사용할 수 없습니다.

2

wchar_t는 ANSI C (1989)의 일부이다.

+0

그러나 Ritchie가 그의 책에서 멀티 바이트 기능을 누락시킨 이유는 무엇입니까? –

+0

내 사본에 ... 참조를 인용하는 것이 중요합니까? 내 사본의 6.1.1 [Keywords]에 확실히 나열되어 있지 않습니다. –

+1

링크 된 아마존 페이지의 "Look Inside"기능을 사용하여 책 색인의 272 페이지로 이동하면'wchar_t'가 표시됩니다 – AShelly

1

wchar_t은 완벽하게 C89 표준입니다. 제 에디션에서는 케니 허 (Kernighan)과 리치 (Ritchie)의 A2.5.2 절에 wchar_t이 언급되어 있습니다.

+0

멀티 바이트 기능을 찾을 수 없습니다. –

+1

A2.5.2에는이 책의 2 판에서 소개 된 "wchar_t"가 있습니다. "... wchar_t를 추가 할 때의 주요 의도는 아시아 언어를 수용하는 것이 었습니다."참고 : 제 1 판은 1978 년에 출판되었습니다. * – pmg

+0

@pmg : 그렇게 많이 믿는다면 그것을 뒷받침하는 표준 참고서를 찾으십시오. –

관련 문제