일단 이 바보같은 생각은 SQL 쿼리 문장에서는 Alias가 동작을 하는데 C 프로그래밍에서도 그렇게 해 보믄 좋지 않을까 라는 생각에서 시작되었다.
풀어서 쓰면 좀 뭔가 있어 보이긴 하는데 실제로는 타이핑을 치키가 귀찮아서, 혹은 copy & paste가 귀찮아서 우리의 까막군을 닥달하여 알아 낸 내용이다.

예를 들자면 다음과 같다.

memcpy(buff, &pCompletePacket->data[jmpoffset], arglen);

위와 같은 구절에서 &pCompletePacket->data[jmpoffset] 라는 항목을 계속해서 써야 하는데 이것을 치키가 귀찮아서 특정한 구절로 대체 해 버리고 싶을 경우에는 다음과 하면 된다.

#define  _HOPI_DTEST_ pCompletePacket->data[jmpoffset]

그리고 실제 코드는 이렇게 변경하면 된다.

memcpy(buff, &_HOPI_DTEST_, arglen);

어쨌건 타이핑을 하는 것이 줄어들었다.

대신에 이 방법을 사용하려면 반드시 해당 내용에 대한 주석문을 철저하게 달아놓아야 따로 코드를 보는 사람이 있을 경우 쓰바쓰바 욕을 하지 않게 만들 수 있을 것이라 할 수 있다.

응용버젼이다.

#define AAA(x) pCompletePacket->data[x]

대충 이해가 가지 않는가? 위에서 나온 jmpoffset이라는 변수를 변경해 가면서 사용할 수 있다.
즉 AAA(1) 하면 끝날 수 있을 듯..

마지막 응용이다.

#define AAA(param) pCompletePacket->##param[jmpoffset]

이렇게 할 경우에는 대충 이해가 가지 않는가? 내용을 넣게 되면 그 내용이 그대로 전달되게 된다.


뒷걸음질 치다가 땅에 떨어져 있는 돈뭉치 하나 건진 기분이다. 으흐흐

Posted by hopi
,