Накопился ряд вопросов по Си, вываливаю сразу кучей.
1. Как посмотреть весь список типов, известных компилятору в данный момент с учётом включенных заголовочников, объявлений и т. д.?
2. Правильно ли я понимаю, что список собственно типов и структур хранятся отдельно, потому что Foo и struct Foo - разные типы данных и могут сосуществовать в рамках одного проекта?
3. В С11 появилось ключевое слово _Generic, однако ещё со стандарта С99 существует заголовочный файл tgmath.h, который реализует подобное поведение, аналогичное перегрузке функций в С++, для набора математических функций. Как это можно было реализовать в С99?