union{
int i;
struct {
unsigned int a : 1;
unsigned int b : 1;
} BIT;
} hoge;//グローバル変数

void funcA(){
//hoge.aに対するいろんな処理(処理の内容はfuncBと同じ)
}
void funcB(){
//hoge.bに対するいろんな処理(処理の内容はfuncAと同じ)
}

Cで上記のような関数があるときに、funcAとfuncBの処理の内容を1つのコードにまとめるということはできないですか?
funcA,funcBをラッパにしてhoge.A,hoge.Bにそれぞれポインタでアクセスしようとするとエラーが起きました