2012-11-12 3 views
2

newb는 getchar()과 같은 함수에 대해 stdio.h와 같은 헤더 파일을 검색하는 데 큰 어려움을 겪고 있습니다. 어쨌든 헤더 파일을보고 "어떻게 작동하는지 보도록"두려워해서는 안되는 정보를 어딘가에 집어 들었습니다. (C++ Primer Plus, Stephen Prata)표준 함수가 stdio.h에서 무엇을하는지 '진정한'이해할 수있는 소스 코드는 어디에서 찾을 수 있습니까?

저는 헤더 파일을 사용하여 경험이 거의 없으며 일반적으로 프로그래밍 할 수 있습니다.

getchar()을 찾으려 할 때 stdio.h가 점점 더 많은 헤더로 넘어 가고 getchar()의 위치가 점점 복잡해지고 시간이 많이 걸리는 것으로 나타났습니다. 필자는이 모든 잘못에 대해 분명히 생각하고 있으며, 의도는 단지 내가 사용하고있는 기능에 대한 소스 코드를 찾는 것일뿐입니다.

내 질문에 대한 답변 : 표준 기능이 실제로하고있는 것을 '이해'하기위한 소스 코드는 어디에서 찾을 수 있습니까?

+0

예, 정상입니다. 그러나 일반적으로 헤더를 추적 할 필요는 없습니다. 맨 페이지에서 포함 할 헤더를 찾을 수 있으며 알아 두어야 할 모든 것입니다. –

+1

사용법이나 구현을 찾으십니까? 방금 사용법을 찾고 있다면 온라인 참조 또는'man'을 사용하십시오. 구현을 찾고 있다면 많은 것들이 헤더에 없다. (단지 선언이기 때문에) – Corbin

+0

내가 사용하는 실제 알고리즘을 찾고있다. 심지어 C 파일로 존재한다. 또는 컴파일 된 바이트 코드로 작성된 것에 대한 선언입니까? 그게 가능할 지 확신 할 수는 없지만 내가하는 일에 대한 단서가 없다. 합리적으로 들리면 그 소스를보고 싶다. – Leonardo

답변

3

가변 주문 또는 기타 사용 메모에 대한 신고는 online reference 또는 man을 사용하십시오. 당신이 실제 코드를 찾고 있다면


, GNU의 libc 같은 C 표준 라이브러리의 구현으로 보인다.

비록 구현이 간단하지 않고 의존성 그래프가 광범위하게 적용됩니다. 그들은 또한 우리의 대부분이 익숙했던 것보다 낮은 수준의 기계와 상호 작용하는 경향이 있습니다. 당신이 :) 기대했던 아마 없을 것

int 
getchar() 
{ 
    int result; 
    _IO_acquire_lock (_IO_stdin); 
    result = _IO_getc_unlocked (_IO_stdin); 
    _IO_release_lock (_IO_stdin); 
    return result; 
} 

:

getchar의 libc의 구현을 고려하십시오.

(참고 : C에 대한 참조가 얼마나 좋은지 전혀 알지 못합니다. 일반적으로 C++에서 일반적으로 사용하는 것입니다.)

+0

예, 제가 찾고있는 것과 정확히 같습니다. 고마워요! – Leonardo

1

C 표준은 실제적으로 존재하는 표준 헤더 파일 (예 : stdio.h)을 요구하지 않습니다. 그들은 단지 내장 될 수 있습니다.

함수의 매개 변수 또는 반환 값을 모르는 경우 C 표준 또는 매뉴얼 페이지를 참조하십시오.

0

C 헤더 파일은 함수를 미리 선언하는 데 사용 (포함)됩니다. 미리 선언 된 함수는 구현이 다른 (또는 그와 관련하여) .c 파일 또는 이미 컴파일 된 라이브러리에있는 사용자 고유의 함수 일 수 있습니다. stdio.h는 마지막 예제입니다.

함수 선언을 찾으려면 헤더 파일을 살펴볼 필요가 없습니다.

환호

Windows에서 간단한 작업을 수행하는 실행 파일 Explorer.exe에서 수정처럼 좀입니다
0

를 구글에서 입력 '사람'을 사용해보십시오. 그것들은 기본 파일이며, 그대로두고 파일에 직접 기능을 씁니다. 또한 파일 검색 및 변경이 문제가되는 경우 IDE를 사용하고 메모장이나 다른 프로그램을 통해 손으로 작업하지 않도록하십시오.