c/c++ 함수의 소스 코드
다양한 C/C++ 기능(strcpy, stcmp, strstr 등)의 구현을 살펴보고 싶었습니다.이것은 c/c++의 좋은 코딩 방법을 아는 데 도움이 될 것입니다.어디서 찾을 수 있는지 알려주시겠습니까?
감사해요.
당신은 C 표준 라이브러리에 있는 모든 C 함수에 대한 소스 코드를 가지고 있는 glibc의 복사본을 확인할 수 있습니다.좋은 출발점이 될 겁니다.
C 표준 라이브러리의 소스 코드가 반드시 좋은 코딩 방식을 강조하는 것은 아니라는 점을 지적할 필요가 있습니다.표준 라이브러리로서, 단순히 사용되는 정확한 컴파일러를 알고 있기 때문에 특정되지 않거나 휴대할 수 없는 수많은 동작에 의존할 수 있는 특별한 지위를 가지고 있습니다.
그리고 물론 이것은 C 코딩 방법에 대해서만 알려줍니다.
그것은 C++ 코딩 방식과는 전혀 관계가 없으며, 이는 매우 다릅니다.그들을 한 언어로 취급하지 마세요.C/C++ 같은 것은 없습니다. C는 고유의 코딩 관행과 공통의 숙어를 가진 언어이고, C++는 별개의 독립적인 언어로 고유의 관행과 숙어를 가지고 있습니다.
좋은 C 코드는 거의 좋은 C++ 코드가 아닙니다.strcpy
그리고 다른 C 라이브러리 함수들은 확실히 좋은 C++ 코드가 아닙니다.
대부분의 컴파일러는 라이브러리에 소스 코드를 제공합니다. 그러나 소스 코드는 일반적으로 예상보다 복잡하고 복잡합니다.
이것을 위한 좋은 자료는 P.J. Plauger의 책 "표준 C 도서관"인데, 중고 도서관을 가면 꽤 싸게 살 수 있습니다.제시된 코드가 항상 단순한 것은 아니지만 Plauger는 이를 꽤 잘 설명합니다(그리고 항상 단순할 수 없고 여전히 표준을 따를 수 없는 이유를 제시합니다).
많은 C 표준 라이브러리 함수들은 커니건과 리치의 C 프로그래밍 언어로 소스 코드 목록과 토론을 가지고 있습니다.이 토론은 C 언어의 세부 사항과 표준 라이브러리의 기능이 후드 아래에서 어떻게 작동하는지에 대해 더 자세히 알 수 있는 유용한 방법입니다.
libc 표준 C 라이브러리의 구현을 보십시오.실제 인기 있는 C 라이브러리가 어떻게 구현되는지 확인하려면 glibc 코드를 살펴보십시오.git을 사용하여 코드에 액세스할 수 있습니다.
git clone git://sourceware.org/git/glibc.git
C++의 경우 다음 미러 중 하나에서 glibc++ 표준 라이브러리를 찾을 수 있습니다.
http://gcc.gnu.org/mirrors.html
또한 uLibc를 확인할 수 있는데, 이것은 GNU 라이브러리보다 더 간단할 것입니다.
http://git.uclibc.org/uClibc/tree/
맛을 내기 위해 uLibc의 strncpy 구현은 다음과 같습니다.
Wchar *Wstrcpy(Wchar * __restrict s1, const Wchar * __restrict s2)
{
register Wchar *s = s1;
#ifdef __BCC__
do {
*s = *s2++;
} while (*s++ != 0);
#else
while ( (*s++ = *s2++) != 0 );
#endif
return s1;
}
"Standarc C Library"는 사양입니다.규격 구현을 위한 소스를 원합니다.당신의 C 컴파일러는 그러한 소스를 제공할 수도 있고 제공하지 않을 수도 있습니다 - 그것은 GCC입니다.
오픈비를 보실 수도 있습니다.SD 소스 트리.구체적으로 libc의 문자열 서브디렉토리를 원합니다.
약 10년 전에, 저는 플라우저의 The Standard C Library를 읽었습니다.철저하게 추천해주세요.
구현은 OS마다 다소 다르겠지만 GNU/Linux 구현이 아마 거기서 가장 쉽게 찾을 수 있을 것입니다.
NetB의 일반 strXXXC 기능은 다음과 같습니다.SD : http://cvsweb.netbsd.org/bsdweb.cgi/src/common/lib/libc/string/
다음은 i386 프로세서용 NetBSD strXXX 구현 http://cvsweb.netbsd.org/bsdweb.cgi/src/common/lib/libc/arch/i386/string/ 입니다.
Visual Studio Professional 또는 Team을 사용하는 경우 여기에서 소스를 찾을 수 있습니다.
C:\프로그램 파일\Microsoft Visual Studio 9.0\VC\crt\src
당신의 목적을 위해, 이 책은 도움이 될 것입니다: C로 알고리즘을 마스터하기
일반적으로 저는 BSD libc가 GNU libc보다 읽기가 훨씬 쉽다고 생각합니다."gcc-ism"이 적고, 핵심은 의도가 훨씬 명확합니다.예를 들어 malloc에 대한 BSD 코드는 glibc에 비해 꽤 읽기 쉽습니다.
언급URL : https://stackoverflow.com/questions/1127328/source-code-of-c-c-functions
'programing' 카테고리의 다른 글
카운터 개체를 판다 데이터 프레임으로 변환 (0) | 2023.10.17 |
---|---|
할당은 캐스트가 없는 정수에서 포인터를 만듭니다. (0) | 2023.10.12 |
jQuery로 HTML 태그를 제거하는 방법? (0) | 2023.10.12 |
JQUERY UI 아코디언 시작이 붕괴되었습니다. (0) | 2023.10.12 |
문자열을 이용한 동적 C 호출 방법 (0) | 2023.10.12 |