Зависит от реализации, но, вообще, в файловых системах, где * не является допустимым именем для файла, препроцессор, скорее всего, должен выдать ошибку. Поскольку #include нужен, всё-таки, для включения конкретного файла с конкретным именем, а не поиска чего-либо подходящего по маске.
Моя ошибка ,там 2 разных файла т.е. в a.c подключается b.c.
Или ты имеешь в виду, что в файле foo.c идёт конструкция #include "foo.c"? Тоже зависит от реализации, но, скорее всего, будет попытка рекурсивно включить файл и посыплются ошибки повторного определения функций, в этом файле содержащихся.
А насчет рекурсии ,спасибо за мысль буду проверять.