GCC spitting error: stray ‘1’ in program (etc)

Ok, so I am wondering why the bloody heck I’m getting messages like main.o:x:y: error: stray ‘1’ in program and related errors * near infinity whilst nitting object files into an executable .

Note to self: never allow your Makefile to say g++ -x c++ foo.o … -o program !!!!

I don’t know what is worse….

(EDIT: actually this reminds me, a friend said it sounded like an encoding error; and in retrospec it looks like GCC was interpreting main.o as a C++ file because of the -x flag lol)