Так как C и C++ разные языки и стандарты принимаются независимо, то могут быть разные проблемы. Например текущая версия стандарта C (C99) была принята в 1999 году в то время как текущий стандарт C++ (C++98) был принят в 1998 году. Часть расширений C99 была адаптирована в 2003 году для C++, но не все. Из банальных вещей в C есть тип long long в то время как C++ его нету, хотя большинство компиляторов на это и на многое другое забивают, но никакой гарантии нет, что в ответ на #include <stdint.h> честный C++ компилятор не скажет, что этого самого long long int (который в этом хедере встречается) в природе не существует.
gcc на это забивает, чтобы заставить его генерить предупреждение нужно использовать флаг -pedantic