It gets pretty computationally expensive when you're dealing with floating points (2.048). For my senior design project that used 2 of these ultrasonic sensors, I simply divided the A/D reading by 2 (which compiles into 2 right shifts in assembly... one for each byte of the 16bit number). But then again, we only needed a rough value... didn't care about the accuracy for long ranges.
Style points I follow and I figure most do:
1) Keep header files for defines and function prototypes, and other includes
2) Put all compile-able code in a .c file.
But, since this code is pretty small, it doesn't really matter
Note about my project: I used 2 of these sensors. The A/D interrupt was used and each sensor was converted one at a time (multiplexed, single-ended mode). After each sensor value was calculated, it was stored in a global variable to be read by anything else. The A/D control register was updated to read the next sensor. The caveat to this is that you have to be careful when reading/writing these 16bit global variables now that you have an interrupt accessing them at potentially the same time.
Just a thought.