Говорят, что номера ошибок, такие как EINVAL, ENOMEM и т. д., определены в errno.h, но я не могу найти их в errno.h, я также искал некоторые каталоги в /usr/include, до сих пор не могу их найти. Я могу без проблем использовать эти макросы в своем коде C. Кто-нибудь может сказать мне, где они?
В каком заголовочном файле определены EINVAL, ENOMEM и т. д. в Linux?
Ответы (3)
Он определяется либо непосредственно в errno.h, либо в файле, включенном (прямо или косвенно) в errno.h.
Я искал его с помощью следующей команды:
find /usr/include | xargs grep ENOMEM | grep '#define'
и я нашел совпадение в /usr/include/asm-generic/errno-base.h
в своем Linux (RHEL 6).
person
Klas Lindbäck
schedule
09.12.2013
Остальное в
/usr/include/asm-generic/errno.h
- person alk; 09.12.2013
Это зависит от реализации стандартной библиотеки C.
Несомненно только то, что <errno.h>
— это заголовок верхнего уровня, который должен использовать код приложения.
Один из способов выяснить это — проследить вызов компилятора.
person
unwind
schedule
09.12.2013
Вы можете запустить locate errno.h | xargs grep EINVAL
, чтобы найти местоположение
На моей машине с Ubuntu 12.04 это /usr/lib/syslinux/com32/include/errno.h
person
rohit89
schedule
09.12.2013