연구실/파편화된 기록들
항목 6: typedef, 포인터 가지고 장난 치지 마라.
최익필
2008. 6. 9. 16:01
이 코드를 우선 보면
이해하기 쉬운가? 갑자기 포인터에 DWORD로 형 변환시켜서, 저장한 다음에, 그것을 다시 LPTEST 형으로 다시 변환시켜서 ... 쓴다.
애초에 void* 로 넘겨 버려서 사용한다면, 더 가독성이 좋을텐데 말이다.
Don't C++
1. typedef 로 포인터 장난질을 하지 마라, 오히려 손으로 치는것이 가독성이 더 높을 때가 많더라.
2. 포인터를 굳이 DWORD로 변환시킬 일이 없다면, 절대 하지 마라. 변환 시키는 횟수 만큼 가독성이 뿌여질것이다.
#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로 변환시킬 일이 없다면, 절대 하지 마라. 변환 시키는 횟수 만큼 가독성이 뿌여질것이다.