EINVAL, ENOMEM 등과 같은 오류 번호는 errno.h에 정의되어 있지만 errno.h에서 찾을 수 없다고 말했고/usr/include 아래의 일부 디렉토리를 검색했지만 여전히 찾을 수 없습니다 그들. 내 C 코드에서 아무 문제없이 이러한 매크로를 사용할 수 있습니다. 누구가 저를 어디에 말할 수 있습니까?Linux에서 정의 된 EINVAL, ENOMEM 등의 헤더 파일은 무엇입니까?
4
A
답변
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
에서 일치를 발견했다.
1
당신은 내 우분투 12.04 기계, 기계 /usr/lib/syslinux/com32/include/errno.h
나머지 부분에서의 위치를
을 찾을 수
locate errno.h | xargs grep EINVAL
을 실행할 수는'는/usr/포함/ASM-일반/errno.h'에 – alk