Я думаю, проблема в том, что вы не использовали "static" для global функции.
Пожалуйста, обратитесь к следующему:
нет предыдущего прототипа для `foo '
Это означает, что GCC нашел глобальное определение функции, не увидев прототипа для функции.Если функция используется более чем в одном файле, в заголовочном файле должен быть прототип для нее.Это предохраняет функции и их использование от синхронизации
Если функция используется только в этом файле, сделайте ее static , чтобы гарантировать, что она никогда не будет использоваться вне этого файла и документачто это локальная функция