2010-03-11 2 views
7

경우에 따라 양식의 헤더 파일을 볼 수 있습니다.슬래시가 포함 된 #include 문 (두 부분으로 구성된 헤더 파일)

#include <sys/sysinfo.h> // I found this on my system under /usr/include/sys/sysinfo.h. Is that all the "sys/" means?                
이 소위

이러한 헤더는 아마 관련 헤더 파일의 그룹은 'SYS'의 라벨 아래에 그룹화 된

#include <stdio.h> 

같은 대부분의 다른 사람들과 다른 파일을하지만, 내가하려고하면 왜 "man pci"와 같은 것입니다 (/ usr/include/sys /에 pci.h 헤더가 없습니다.)

답변

8

해야 그것은 편리한 방법입니다 헤더 파일에 '네임 스페이스 구조'를 제공합니다. 유닉스 세계에서 주요 부분은 <stdio.h>과 같은 헤더 사이에 있으며, 일반적으로 상당히 일반적이며 주로 사용자 프로그램에서 사용하기위한 것이지 주로 운영 체제 커널에서 사용하는 것이 아닙니다. 반대로 <sys/sysinfo.h> 또는 <sys/types.h>과 같은 헤더는 커널을 컴파일 할 때 사용하기위한 것이 었습니다. 시스템 Y가 더 많았습니다.

요즘은 프로젝트의 헤더를 다른 프로젝트의 헤더와 구분하는 방법을 제공합니다. 예를 들어, <openssl/ssl.h>은 헤더를 OpenSSL 코드 기반에 속하는 것으로 식별합니다.

헤더를 지정하는 스타일에 대한 특정 이름이 있는지 모르겠습니다.

OpenSSL 헤더가 /usr/local/include/openssl 디렉토리에 저장된 경우 컴파일러 명령 줄에 -I /usr/local/include을 지정합니다. 실제로 일어나는 일은 꺽쇠 괄호 안에있는 이름 앞에 여러 개의 표준 디렉토리 중 하나를 붙여서 헤더를 찾아 보는 것입니다.이 중 하나는 유닉스에서 기본 디렉토리 중 하나가 /usr/include입니다. 따라서, <stdio.h>/usr/include/stdio.h<sys/sysinfo.h>에서 발견되어

+0

응답 해 주셔서 감사합니다 "처리기"와 "링커"교체 등 /usr/include/sys/sysinfo.h에서 발견된다. 그런데 왜 특정 헤더 파일에 대한 맨 페이지가있을 수 있지만 다른 파일은 없는지 알 수 있습니까? 어쩌면 일부는 사적인 것이거나 문서화하기에 충분하지 않을 수도 있습니다. 'man directory/specificheader.h'와 같은 것을 접하게 된 적이 있습니까? – wp123

+1

@wpeters : 일반적으로 함수는 문서화되어 있지만 (때로는'man errno' 또는'man end'와 같은 객체), 해당 맨 페이지에는 헤더가 무엇인지 언급되어 있습니다. –

2

그들은 여전히 ​​헤더이지만 기본 검색 경로에 직접 있지 않습니다. 써드 파티 라이브러리의 헤더에 대해 종종 수행되어, 주식 libc 헤더와 분리되어 유지됩니다.

2

프리 프로세서가 작동하는 방식과 관련이 있습니다. 전처리 기가 /usr/include/이면 sys/sysinfo.h이 필요합니다. 당신의 전처리 /usr/include/sys/에 보이는 경우에만 sysinfo.h

-I-l 옵션 GCC와 주변

편집을 연주 해보십시오 필요 : 그 자본 I와 소문자 L

+0

가 – laalto

관련 문제