sbrk의 기능에는 아무런 영향이없는 것 같지만 sbrk()의 설명서에는 intptr_t 매개 변수가 필요합니다.sbrk()와 C의 intptr_t vs int 전달의 차이점은 무엇입니까?
int 유형을 매개 변수로 전달할 때 작동합니다 (또는 적어도 작동하는 것 같습니다).
이 아키텍처에 따라
sbrk의 기능에는 아무런 영향이없는 것 같지만 sbrk()의 설명서에는 intptr_t 매개 변수가 필요합니다.sbrk()와 C의 intptr_t vs int 전달의 차이점은 무엇입니까?
int 유형을 매개 변수로 전달할 때 작동합니다 (또는 적어도 작동하는 것 같습니다).
이 아키텍처에 따라
오른쪽 헤더가 포함되어있는 한 int
은 sbrk()
으로 전달되지 않습니다. 전달하는 값은 C 판촉 규칙에 따라 intptr_t
으로 변환됩니다. 이 규칙은 끔찍하게 미묘하기 때문에 적어도 존재한다는 것을 알고 있어야하며 모서리의 경우에 호출하지 않아야합니다. 결과적으로
int
처럼 보이는
sbrk
뭔가, 심지어
intptr_t
경우를 통과 할 때 제공하는 헤더만큼 플랫폼,
에 int
에서 다른, 같은 충돌로 멋진 뭔가를 기대하지 않습니다 sbrk()
의 프로토 타입은입니다.
intptr_t
변화의 크기는 일반 C.입니다. int
은 아키텍처에 따라 크기가 변경되거나 변경되지 않을 수 있습니다. 즉, 64 비트를 사용하는 경우 intptr_t
은 64 비트이어야하며, int
일 수 있습니다.은 32 비트입니다.
그래서 sbrk()에 'int'를 전달하면이 값을 저장하고 int 위치에 intptr_t를 전달합니까? – Bob
@Bob 아니요, 프로모션 규칙은이 작업을 수행하지 않습니다. 또한'intptr_t'는 정수형이며'int'와 항상 같지는 않습니다. –