In my experience fighting the compiler offten means that you are trying to do something stupid. (and many times its not easily visible that in fact you are wrong) And in the case that you know you are trying to do something correct that the compiler does not understand you can use unsafe code.
I would really miss higher level constructs that C does not know. Perhaps C++ would be more understandable. C++ at least has generics, namespaces, classes and other organizational stuff. C is great for low level code that is small enough and simple enough that you can handle everything yourself, but the same can be said about assembly.
Will you post the source somewhere?