C не находит символ Record, потому что он объявлен позже в коде, как если бы вы пытались использовать функцию, которую вы объявили в коде, без определения его прототипа.
Вы также можете объединить два объявления, и тогда оно станет:
typedef struct Record
{
int a;
} R;
Это также работает и, на мой взгляд, даже лучше, не потому, что оно может быть быстрее, а потому, что оно меньше.