반응형
32bit, 64bit 환경을 고려하여 개발을 하고 있다면 형변환을 무시할 수 없습니다.
정수형, 포인터형 등 다양한 환경에서 데이터형의 크기가 달라지므로 무작정적인 값 대입을 문제를 초래할 수 있습니다. 그래서 간단한 Macro를 이용해 bit 무관하게 변경할 수 있는 방법을 제시합니다.
Callback 함수 등의 User data로 void *를 많이 전달합니다. 이 때 정수형 데이터를 전달하고 싶다면 아래 매크로를 참고해 전달하는 것을 추천드립니다.
C언어 자료형에 관한 매우 간단한 코드라 설명은 생략하겠습니다.
1 2 3 4 5 6 7 8 9 | #ifndef __S_TYPE_CONVERSION_H__ #define __S_TYPE_CONVERSION_H__ #define SINT_TO_POINTER(x) ((void *)(long)(x)) #define SPOINTER_TO_INT(x) ((int)(long)(x)) #define SUINT_TO_POINTER(x) ((void *)(unsigned long)(x)) #define SPOINTER_TO_UINT(x) ((unsigned int)(unsigned long)(x)) #endif /* __S_TYPE_CONVERSAION_H__*/ | cs |
만약 32bit - 64bit 간 Architecture에서의 문제점을 잘 모르신다면 아래 link를 확인해 주세요.
Porting Linux applications to 64-bit systems
반응형
'Language > C,C++' 카테고리의 다른 글
Bit 연산 매크로 (0) | 2018.11.08 |
---|---|
표준출력에 텍스트 색상 입히기 (colorize printf format) (0) | 2018.10.09 |
[C] #pragma pack( [show] | [push | pop] , n ) (0) | 2018.07.06 |
[C++] atomic_flag (0) | 2018.06.26 |
C언어 try-catch 흉내내기 (0) | 2018.03.19 |