programing

c/c++ 함수의 소스 코드

testmans 2023. 10. 12. 22:16
반응형

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;
}

strcmpstrstr 입니다.

"Standarc C Library"는 사양입니다.규격 구현을 위한 소스를 원합니다.당신의 C 컴파일러는 그러한 소스를 제공할 수도 있고 제공하지 않을 수도 있습니다 - 그것은 GCC입니다.

오픈비를 보실 수도 있습니다.SD 소스 트리.구체적으로 libc의 문자열 서브디렉토리를 원합니다.

약 10년 전에, 저는 플라우저의 The Standard C Library를 읽었습니다.철저하게 추천해주세요.

표준 c 라이브러리

여기 있어요.

구현은 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

반응형