Me parece que lo que querés es operaciones con bits, ¿ no ? para empezar no es avanzado ....
el tema es .. cuantos flags querés on y off (mientras menos, mejor), y en base a eso elegís un tipo de dato que logre acaparar esa cantidad de bits, la cantidad de bits es igual o lo más próximo (contando desde arriba) a la cantidad de opciones
#include <stdio.h>
#include <stdlib.h>
/* que sería en binario -> 0000 0000 0000 0000 0000 0000 0000 0001 */
#define BIT_HI 0x1
/* que sería en binario -> 0000 0000 0000 0000 0000 0000 0000 0010 */
#define BIT_WORLD 0x2
/* que sería en binario -> 0000 0000 0000 0000 0000 0000 0000 0100 */
#define BIT_ELHACKER 0x4
/* los 1 no deben superponerse*/
int bitCheck(int Flags,int Bit){return ((Flags & Bit)== Bit);}
void bitAdd(int Flags,int Bit){Flags|=Bit;}
void bitToggle(int Flags,int Bit){Flags^=Bit;}
void bitUnset(int Flags,int Bit){Flags &= ~Bit;}
void mFuncion(int mMask)
{
if (bitCheck
(mMask
,BIT_HI
)) printf(" Hola"); if (bitCheck
(mMask
,BIT_WORLD
)) printf(" Mundo"); if (bitCheck
(mMask
,BIT_ELHACKER
)) printf(" de elhacker.net"); }
int main()
{
printf("\r\nUsando BIT_HI y BIT_WORLD : "); mFuncion(BIT_HI|BIT_WORLD);
printf("\r\nUsando BIT_HI, BIT_WORLD y BIT_ELHACKER: "); mFuncion(BIT_HI|BIT_WORLD|BIT_ELHACKER);
return 0;
}
para este ejemplo elegí un tipo de dato muy grande, con un byte o char alcanzaba tranquilamente (8 bits), pero bueh, para ilustrar... también hay funciones que no se usan ahí, pero también las dejé para ilustrar y para no las usé para no liar mucho el ejemplo ...
¿es eso ?
Saludos.