且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

C语言位操作控件属性

更新时间:2022-09-25 22:50:15

#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,如需转载请自行联系原作者