title: What defines an opaque type in C, and when are they necessary and/or useful?
body: <p>I've seen the concept of 'opaque types' thrown around a bit but I really haven't found a succinct answer as to what defines an opaque type in C and more importantly what problems they allow us to solve with their existence.  Thanks</p>