とりあえず一つ

"__(アンダースコア2つ)"を先頭とする識別子は、C++実装とライブラリ用に予約されているので使ってはならないというのはC++使っている人ならよく知っていると思いますが、"_(アンダースコア1つ)"を先頭とする識別子もCの実装が使うために予約されているというのは(逆に)知られてないかもしれません。
 これが原因かわかりませんが、先頭にアンダースコアがある変数の所でgccがガンガン警告を出してくれます。抑制するオプションを探すより直した方が早い……。