[t:/]$ 지식_

배열로 다시 쓰는 oemioctl.c

2010/04/10

성능과 소스의 가독성, 무결성을 위해서라면 win ce.net 4.2 의 oemioctl.c 는 다음과 같이 쓰는 것도 좋다.

기존 소스는 다음과 같이 되어 있다.

스윗치 (무슨 IOCTL이니?) -> 케이스 (처리하자)

소스를 바꾸자면 다음과 같이 바꿀 수 있다. 먼저 준비가 필요하다.

#define IOCTL_어쩌구0        0
#define IOCTL_어쩌구1        1

.
.
.

IOCTL 초기화 함수 {
     펑션포인터의 배열[IOCTL_어쩌구1] = 실체 처리 함수 이름1;
     펑션포인터의 배열[IOCTL_어쩌구2] = 실체 처리 함수 이름2;
             .
             .
}  // 사실 이 함수는 각 디바이스 드라이버, 처리 모듈 단위에서 프레임웍 정의를 해 놓고 정의에 따라 들어가야 되는 놈이다.

실제 처리문에서는 다음과 같이 바뀐다. 스윗치 케이스가 사라지고.

펑션포인터의 배열 [IOCTL_어쩌구1](void *전달할 데이터위치);

물론 크리티컬 섹션처리, 예외처리등 신경쓸 것은 도처에 널려 있으나. 이렇게도 바꾸어 볼 수 있다는 이야기다. 릴레이션, 케이스, 배열, 포인터 에서 말한 것 처럼 일체의 조건문이 사라지고 배열 그 자체로 처리가 끝난다.









[t:/] is not "technology - root". dawnsea, rss