我在c
中看到过多个typedef用于相同的类型typedef struct i_data
{
uint32 size;
uint8 *data;
} I_DATA, *I_DATA_PTR;
typedef I_DATA I_TEMP;
typedef I_DATA *I_TEMP_PTR;
typedef I_DATA I_SEARCH_TEMP;
typedef I_DATA *I_SEARCH_PTR;
有可能吗?编译器如何区分所有这种typedef定义
答案 0 :(得分:4)
I_DATA和I_TEMP以及I_SEARCH_TEMP是同一个东西,i_data结构的typedef。
I_DATA_PTR和I_TEMP_PTR以及I_SEARCH_PTR是同一个东西,是指向i_data结构的typedef的指针。
如果它们完全相同,理论上为什么编译器需要区分它们?
这有点像一个有姓名和昵称的人,它可能不是同一个名字,但它仍然是同一个人;)
答案 1 :(得分:-3)
当然有可能!我无法确切地告诉你编译器是如何计算出来的......我从未读过编译器的内部工作原理。我知道同一类型的多个类型定义不是问题!