#include <stdio.h>
#define useA (1 << 0) //0x01
#define useB (1 << 1) //0x02
#define useC (1 << 2) //0x04
int funcA(void)
{
printf("A\n");
return 0;
}
int funcB(void)
{
printf("B\n");
return 0;
}
int funcC(void)
{
printf("C\n");
return 0;
}
int execute(unsigned char id)
{
if (id & useA)
{
funcA();
}
if (id & useB)
{
funcB();
}
if (id & useC)
{
funcC();
}
return 0;
}
int main(void)
{
unsigned char id = 0;
printf("-- 初期値 --\n");
execute(id);
printf("-- useA をONにする --\n");
id |= useA;
execute(id);
printf("-- useA, useB, useC すべてをONにする --\n");
id |= useA | useB | useC;
execute(id);
printf("-- useB だけをOFFにする --\n");
id &= ~useB;
execute(id);
printf("-- useB をもう一回OFFにする --\n");
id &= ~useB;
execute(id);
printf("-- useA, useC をOFFにする --\n");
id &= ~useA & ~useC;
execute(id);
return 0;
}