2013-12-09 2 views
4

EINVAL, ENOMEM 등과 같은 오류 번호는 errno.h에 정의되어 있지만 errno.h에서 찾을 수 없다고 말했고/usr/include 아래의 일부 디렉토리를 검색했지만 여전히 찾을 수 없습니다 그들. 내 C 코드에서 아무 문제없이 이러한 매크로를 사용할 수 있습니다. 누구가 저를 어디에 말할 수 있습니까?Linux에서 정의 된 EINVAL, ENOMEM 등의 헤더 파일은 무엇입니까?

답변

5

표준 C 라이브러리의 구현에 달려 있습니다.

확실한 것은 응용 프로그램 코드에서 사용해야하는 최상위 헤더 인 <errno.h>입니다.

알아내는 한 가지 방법은 컴파일러의 호출을 추적하는 것입니다.

8

이 파일은 errno.h에 직접 정의되거나 errno.h에 의해 (직접 또는 간접적으로) 포함 된 파일에 정의됩니다.

나는 다음 명령을 사용하여 검색 :

find /usr/include | xargs grep ENOMEM | grep '#define' 

을하고 내 리눅스 (RHEL 6)에 /usr/include/asm-generic/errno-base.h에서 일치를 발견했다.

+0

나머지 부분에서의 위치를 ​​

을 찾을 수 locate errno.h | xargs grep EINVAL을 실행할 수는'는/usr/포함/ASM-일반/errno.h'에 – alk

1

당신은 내 우분투 12.04 기계, 기계 /usr/lib/syslinux/com32/include/errno.h