I am looking for a good C compiler for the PIC 16 family, working on Windows.
A couple of colleagues use bknudc but some seem to dislike it
I have found Hi-Tech to be very good. I'd have voted up Louis' answer if I had a better reputation. I also agree that the PIC18F is a very good alternative. Look for a k-series part as these are the newer, better, and cheaper parts. They also have very low current draw (if thats important to you).
You're right in your assessment that PIC16 is not really C-friendly. If you want to code in C you are much much better off doing it with PIC18.
Microchip gives out an excellent and free IDE and compiler called MPLAB for the PIC18. Its really easy to work work. Plus the PIC18 family is generally more powerful but has some chips with a not much larger footprint than that of the PIC16 family.
Starting to develop a new product with PIC16 is a not a good idea.
Sourceboost BoostC is very nice C compiler for PIC12/PIC16/PIC18 series. They also have BoostC++ and BoostBasic compiler. Comes with fine IDE, has basic simulation options. I much like it over CCS and Microchip C18 syntax. Feels cleaner and less cluttered. However, it is not free either but licenses are quite cheap. Free/Lite version allows 2kB of code. With this you can already do alot.
Just for completion:
There is a really good compiler (xc8) from Microchip. The compiler comes in two version:
Free and Pro
The code from the Free version is up to 50% larger than the Pro version.
The xc8 is fine for every 8 Bit PIC (PIC10, PIC12, PIC16, PIC18, AVR (Version 2.0 and up))
The MPLAB®XC C Compiler contains a free, 60-day trial of a PRO license for evaluation when activated.
There is also a monthly subscription license and a functional safety license for the XC-Pro compiler available.
Info
CCS compiles for any PIC from 12, 16, 18 and upper. It is not free, but it does a hell of a job as a pic compiler. (Beats ASM any day for me)
I believe that SDCC now has some support for PIC16.