Interesting. I think that has to do with the fact that you are using
two different Go files that both #include <c_header.h>. <c_header.h>
uses typedef to define anonymous structs. The fact that the header is
being included twice in the same package seems to be causing cgo to
generate two different Go structs, one for each .go file. And then it
can't figure out the definition of the Go struct, so you get this
error.
This is probably a bug in cgo, so feel free to file an issue at
https://golang.org/issue.
You can probably make progress by combining the .go files so that you
only have a single import "C" with a #include <c_header.h>.
Ian