데이터 구조 정의를 위한 man 섹션이나 기타 문서 저장소가 있습니까?

데이터 구조 정의를 위한 man 섹션이나 기타 문서 저장소가 있습니까?

/usr/include/foo.h약 백만 번 정도는 a 또는 기타의 구성원을 찾아야 했습니다 . 라이브러리 및 커널 호출을 위한 man 섹션이 있는데, 그 중 일부는 데이터 구조에 대한 설명을 포함하고 일부는 그렇지 않습니다. 커널 및 라이브러리 데이터 구조의 정의를 찾을 수 있는 곳이 있습니까?struct foofoo_t

답변1

GNU C 라이브러리에는참고 도서여기에는 표준 라이브러리 및 확장의 모든 또는 대부분의 데이터 구조에 대한 문서가 포함됩니다. 하나 있다유형 인덱스. "GNU C 참조 매뉴얼"도 있지만 "GNU C 참조 매뉴얼"과 동일하지는 않습니다.도서관참조 매뉴얼'은 서로 다른 두 가지입니다.

데이터 구조를 탐색하는 데 충분한 문서를 자동으로 생성할 수도 있습니다.강력한 산소(실제 주석이 달린 콘텐츠에 더 잘 작동하지만 대략 이런 방식으로 사용할 수 있습니다.) 여기서 이것을 시도했는데 /usr/include2분도 채 걸리지 않았습니다(약 800MB의 HTML이 생성되었습니다). 단계는 다음과 같습니다.

  1. 어딘가에(어디서든) 기본 구성 파일을 만듭니다 doxygen -g doxygen.conf.

  2. 파일을 편집하고 다음 설정을 변경합니다.

    OUTPUT_DIRECTORY       = /home/foo/whatever # documentation goes here
    OPTIMIZE_OUTPUT_FOR_C  = YES
    EXTRACT_ALL            = YES
    INPUT                  = /usr/include
    FILE_PATTERNS          = *.h
    RECURSIVE              = YES
    GENERATE_LATEX         = NO
    

    이 모든 내용은 이미 구성 파일에 있으므로 표시된 값을 검색하고 변경/설정해야 합니다.

  3. 생산하다: doxygen doxygen.conf.

지금 열다 /home/foo/whatever/html/files.html. 하나가 있지만 index.html아마도 WTF일 것입니다(다시 말하지만, doxygen은 특별히 주석이 달린 항목에 주로 사용됩니다). 따라서 파일 목록이 가장 예측 가능한 진입점입니다. 풍부한 "데이터 구조 색인"도 있지만 어떤 이유로든 당신이 생각하는 모든 것이 여기에 색인되어 있지는 않습니다. 예를 들어 structstat.html파일 목록을 통해 찾을 수 있습니다.asm 일반 -> stat.h, 그러나 "Data Structure Index"에는 "struct stat"가 언급되어 있지 않습니다. 많은 표준 C lib 항목은 이 패턴을 따릅니다. 예측 가능한 헤더()에는 sys/stat.h플랫폼/시스템 특정 헤더로 끝나는 일부 외부 항목을 가져오는 매크로/정의/유형 정의가 있습니다 asm-generic.h. 전에도 이런 걸 알아차렸어요. stat 예제는 나쁘지 않습니다. 적어도 최종 정의는 여전히 struct stat대신 호출됩니다 struct _fooX_stat.

따라서 익숙해지는 데 시간이 걸리며 궁극적으로 를 사용하는 것보다 낫지 않습니다 grep. 또한 비사용자 필드를 포함한다는 단점도 있습니다(예: struct stat위에 설명된 설명을 와 비교 man 2 stat). 표준 라이브러리(및 GNU 확장)의 경우 참조 매뉴얼이 훨씬 좋습니다. 그래도 WRT 매뉴얼에 없는 것이 없는 것보다는 낫습니다. 정말로 이 방법을 사용하고 싶다면 전체 디렉토리보다는 개별 디렉토리를 독립적으로 사용하는 것이 더 좋습니다(단서: 그렇게 설정할 수 있습니다 RECURSION = NO). 800MB의 HTML은 꽤 부피가 큽니다.

관련 정보