自作板絡みだけど、なんか面白いコードが出てたので貼り。
unionのこの使い方、どうなんですか?

void swap (unsigned char *c);
int main(int argc, char* argv[])
{
 static union{
 unsigned short iPort;
 union {
  unsigned char cPort[2];
  };
 };
 iPort=0xFFEE;
 printf("[変換前:%X:" ,iPort);
 swap(cPort);
 printf( "変換後:%X%X]\n",cPort[0],cPort[1]);
 return (0);
}

void swap (unsigned char *c){
 unsigned char tmp;
 tmp = c[0];
 c[0] = c[1];
 c[1] = tmp;
}