이 코드를 우선 보면

#include <iostream>

using namespace std;

typedef struct
{
    unsigned int a;
    int b;
    int c;
} TEST, *LPTEST;

int main(void)
{
    LPTEST test_data;       
    LPTEST aaa;
    aaa = (TEST *)malloc(sizeof(TEST));
    aaa->a = 1;
    aaa->b = 2;
    aaa->c = 3;

    DWORD test = (DWORD)aaa;
    test_data = (LPTEST)test;
}

이해하기 쉬운가? 갑자기 포인터에 DWORD로 형 변환시켜서, 저장한 다음에, 그것을 다시 LPTEST 형으로 다시 변환시켜서 ... 쓴다.

애초에 void* 로 넘겨 버려서 사용한다면, 더 가독성이 좋을텐데 말이다.



Don't C++
1. typedef 로 포인터 장난질을 하지 마라, 오히려 손으로 치는것이 가독성이 더 높을 때가 많더라.
2. 포인터를 굳이 DWORD로 변환시킬 일이 없다면, 절대 하지 마라. 변환 시키는 횟수 만큼 가독성이 뿌여질것이다.




  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기