本文共 1420 字,大约阅读时间需要 4 分钟。
#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,如需转载请自行联系原作者