1) the sc.exe compiler is a smart tool that will be able to update your header and source files when the associated IDL file has changed. If you then rerun sc.exe, it will try to figure out what has changed (as far as the interface that the IDL file defines is concerned) and update your header and source files. Note that sc.exe will NEVER muck with your implementation (the code you added to the method stubs that sc.exe generates), at least not on purpose.
That said, beware: sc.exe is not perfect.
2) I strongly suggest to use the C++ emitter even if you do not want to code in C++ but only in C. The C++ emitter will create stub code that will allow you to call a method on the somSelf pointer which, for an object oriented approach which SOM is pursuing, is a meaningful and sensible thing to do. See the HWMAN source code and you will understand what I mean.
So instead of doing this call with the C bindings:
_wpPopulate(somSelf,0,NULL,FALSE);
you do this with the C++ bindings:
somSelf->wpPopulate(0,NULL,FALSE);
If you want to generate C++ headers and source files you do this:
sc.exe -C200000 -S200000 -scx;xh;xih xwpclock.idl
Lars