Can I pass a bit register as a function argument in Hi-Tech C compiler for PIC16?
Maybe this would work, but it is not standard C:

void setBitHigh( bit *b ){
   b = 1;
}
setBitHigh( &amp; RB3 );


If not, then there is no direct way to do what you want. You could of course return the value from the function and then assign it:

RB3 = newBitValue();


or you could pass the function both the byte address and the offset, and leave it to the function to do the dirty work:

void setBitHigh( unsigned char *a, bit_offset b ){
   *a |= ( 1 &lt;&lt; b );
}
setBitHigh( &amp; PORTB, 3 );