un programma c non è detto che sia un programma valido in c++ (e viceversa), per questo g++ puo non compilarti ciò che gcc ti compila e viceversa. Altri problemi possono sorgere in fase di linking se usi in un programma c++ funzioni compilate come C e non dichiarate come tali.