2017-05-02 1 views
0

현재 getopt() 함수의 자체 버전을 만들려고합니다. 하지만 int 형식으로 문자 형식을 반환하는 방법을 모르겠습니다.unistd.h 라이브러리의 getopt() 함수

getopt() 함수의 소스 코드를 살펴볼 방법이 있습니까? 당신이 볼 수있는 이상의 구현이 있습니다 물론 https://github.com/lattera/glibc/blob/master/posix/getopt.c

, 그러나 이것은 아마도 가장 인기있는 하나입니다

+2

할 일이별로 없습니다. int f = 'a'; char c = 'a'; int i = c; 그것은 모두 암시 적 변환에 의해서만 작동합니다. – nos

+1

소스 코드를 자유롭게 사용할 수 있습니다 –

+0

"int 타입으로 문자 유형을 반환하는 방법"이 문제는 무엇입니까? 문자는 작은 정수입니다. –

답변

1

getopt(3) 함수의 반환 값은 (는 반환 가능한 모든 char의의 간격) 추가 값 옵션 조건의 끝을 표시 수 있도록 int입니다. 이 추가 값은 EOF (getchar(3) 함수에서와 같이)이며 가능한 값인 char과 달라야합니다.

이 처리하고 signed 또는 unsigned으로, 두 기능이 2550에서 unsigned byte로 문자 값으로 반환 값을 구현하거나 다른 C 컴파일러의 가능성에 모든 음의 값을 매핑하여 (char를 구현 양수이면 음수 값에 상수 인 256이 추가됩니다. 예를 들어, 언어가 정확히 어떻게 지정되는지는 지정하지 않았으므로 음수는 128..255 범위에 들어가고, EOF을 다음과 같이 예약합니다. 값은 -1입니다.

당신이 getopt(3) 기능을 작성하는 경우

그냥 그렇게 값이 기본 char 유형 돈 '에 대해 반환 구현 후 (가장 가능성이 -1입니다) EOF에 사용되는 어떤 값을 확인하고, 시스템의 표준 C 라이브러리에 통합한다 /와 충돌하거나 겹칩니다.