Еще одно важное отличие: typedef
s не может быть объявлено вперед. Таким образом, для опции typedef
вы должны #include
файла, содержащего typedef
, что означает все, что #include
s, ваш .h
также включает этот файл, независимо от того, нуждается он в этом или нет, и так далее.
Без typedef
в некоторых случаях вы можете просто добавить объявление вперед struct Foo;
в верхней части вашего .h
файла и только #include
определение структуры в вашем файле .cpp
.