#include <stdio.h>#define YES 1#define NO 0#define SOLID 0#define DOTTED 1#define DASHED 2#define BLUE 4#define GREEN 2#define RED 1#define BLACK 0#define YELLOW (RED | GREEN)#define MAGENTA (RED | BLUE)#define CYAN (GREEN | BLUE)#define WHITE (RED | GREEN | BLUE)const char * colors[8]={"black","red","green","yellow","blue","magenta","cyan","white"};struct box_props { unsigned int opaque :1; unsigned int fill_color :3; unsigned int :4; unsigned int show_border :1; unsigned int border_color :3; unsigned int border_style :2; unsigned int :2;};void show_settings(const struct box_props * pb);int main(void){ struct box_props box={YES,YELLOW,YES,GREEN,DASHED}; printf("Original box setting:\n"); show_settings(&box); box.fill_color=NO; box.fill_color=WHITE; box.border_color=MAGENTA; box.border_style=SOLID; printf("\nModified box settings:\n"); show_settings(&box); return 0;}void show_settings(const struct box_props * pb){ printf("Box is %s.\n",pb->opaque==YES?"shown":"transparent"); printf("The fill color is %s.\n",colors[pb->fill_color]); printf("Border %s.\n",pb->show_border==YES?"shown":"not shown"); printf("The border style is"); switch(pb->border_style){ case SOLID:printf("solid.\n");break; case DOTTED:printf("dotten.\n");break; case DASHED:printf("dashed.\n");break; default:printf("unkown type.\n"); }}
本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/421035,如需转载请自行联系原作者