The direct answer is, you can if you compiler allows it.
When asking C questions please let us know what processor and compiler you are using. They differ enough that one needs to know.
I use CCS which has #bit and #byte directives that allow that sort of thing. But no #word. It may exist on 16 bit compilers.
A better, compiler independant, answer is along the line of what Nigel suggested. Declare a 16 bit shadow register (just a 16 bit variable) and do you crunching with it. When needed call a function to write the top 8 bits to C and the lower to D.
If you need speed make the copy function inline.