ls.c
코드를 조사한 결과 xstrtoul()
으로 전화를 알았습니다. 나는이 유용한 함수가 정확히 어디에 정의되어 있는지 알아 내고 싶었다. 나는이 상황을 제대로 이해한다면/xstrtoul()은 어디에 정의되어 있습니까?
# define _DECLARE_XSTRTOL(name, type) \
strtol_error name (const char *, char **, int, type *, const char *);
_DECLARE_XSTRTOL (xstrtol, long int)
_DECLARE_XSTRTOL (xstrtoul, unsigned long int)
_DECLARE_XSTRTOL (xstrtoimax, intmax_t)
_DECLARE_XSTRTOL (xstrtoumax, uintmax_t)
, 전처리 통과 후 결과 함수 프로토 타입은 다음과 같습니다 :
strtol_error xstrtoul (const char *, char **, int, unsigned long int *, \
const char *);
그러나, 유일한 관련 함수를 정의 이것은 다음 코드를 가지고있는, xstrtol.h
를 알려준
strtol_error
__xstrtol (const char *s, char **ptr, int strtol_base,
__strtol_t *val, const char *valid_suffixes)
내 생각 엔 그 어떻게 든 일이다 xstrtol.c
에 다음 서명이 __xstrtol()
입니다 e 컴파일러는이 함수의 여러 인스턴스를 매번 __xstrtol
으로 대체 된 다른 이름과 __strtol_t
을 다른 유형으로 매핑합니다. 그러나 나는 이것이 어디서 어떻게 이루어 졌는지 이해하지 못합니다. (xstrtol.c
의 맨 위에는이 두 가지 각각에 대해 #define
만 있습니다.) 함수가 정말 정의된다
정보 주셔서 감사합니다. coreitils의 debuginfo를 살펴 보았는데, 단지 하나의 xstrtol.c 파일 만 있고, git tree와 같은 온 가족은 아닙니다. – Meta