0
다음과 같은 크기의 매크로를 작성했습니다. 차이점을 알고 싶었습니다.다음 코드와이 형식 캐스팅이 다른 이유는 무엇입니까?
#define my_sizeof(type) (char*)(&type+1)-(char*)(&type)
#define my_sizeof(type) (void*)(&type+1)-(void*)(&type)
첫번째 질문은 타입 캐스팅이 필요한 이유는, 내가 캐스팅 입력하지 않는 경우, 항상 나는 그것을 실행하여 체크 1을 반환 것을 알고있다. 나는 그 의미를 알고 싶다. (나는 그것이 컴파일러에게 무엇을하도록 지시 하는지를 의미한다.) 2ndly
,
그것이 어떤 차이를 * 문자로하고 무효 * 않습니다.?고마워요.
형식 매크로 매개 변수'type'의 이름이 잘못 지정되었습니다. 'my_sizeof (int) '를 사용하면 매크로가 작동하지 않으므로'Var'이어야합니다. –
C 프로그래밍에 대한 좋은 책을 읽었습니까? 포인터 연산은 입력 된 요소에서 작동합니다! –
표준 C에서 두 개의'void *'포인터를 빼낼 수는 없지만'gcc'는 이것을 확장자로 허용합니다! –