XDR-枚举的试用
2014年4月7日17:50:14
定义一个.x文件,lww.x。文件内容如下:
enum colors{
RED = 2,
YELLOW = 3,
BLUE = 5,
GREEN = 0x10
};
struct lww_int
{
int m_nAge;
};
编写C程序:
#include <stdio.h>
#include <rpc/rpc.h>
#include "lww.h"
//int main()
//{
// printf("begin\n");
//
// FILE * pFile = fopen("lww.txt","wb");
// XDR XDR;
// xdrstdio_create(&XDR,pFile,XDR_ENCODE);
//
// colors aRED = RED;
// colors aYELLOW = YELLOW;
// colors aBLUE = BLUE;
// colors aGREEN = GREEN;
// lww_int aLwwInt;
// aLwwInt.m_nAge = 28;
//
// xdr_colors(&XDR,&aRED);
// xdr_colors(&XDR,&aYELLOW);
// xdr_colors(&XDR,&aBLUE);
// xdr_colors(&XDR,&aGREEN);
// xdr_lww_int(&XDR,&aLwwInt);
//
// xdr_destroy(&XDR);
// fclose(pFile);
//
// printf("end\n");
//
// return 0;
//}
void printColor(colors aColor)
{
switch(aColor)
{
case RED:
printf("红色\n");
break;
case YELLOW:
printf("黄色\n");
break;
case BLUE:
printf("蓝色\n");
break;
case GREEN:
printf("绿色\n");
break;
default:
printf("错误色\n");
break;
}
return;
}
int main()
{
printf("begin\n");
FILE * pFile = fopen("lww.txt","rb");
XDR XDR;
xdrstdio_create(&XDR,pFile,XDR_DECODE);
colors aColor;
lww_int aLwwInt;
xdr_colors(&XDR,&aColor);
printColor(aColor);
xdr_colors(&XDR,&aColor);
printColor(aColor);
xdr_colors(&XDR,&aColor);
printColor(aColor);
xdr_colors(&XDR,&aColor);
printColor(aColor);
xdr_lww_int(&XDR,&aLwwInt);
printf("%d\n",aLwwInt.m_nAge);
xdr_destroy(&XDR);
fclose(pFile);
printf("end\n");
return 0;
}