【发布时间】:2011-05-03 21:48:04
【问题描述】:
为什么
void foo(T*);
在 C 和 C++ 中都是非法的(因为 T 未定义),而
void foo(struct T*);
是有效的,即使它仍然没有定义 T?是否存在任何情况,无论T 是结构还是其他类型(类/枚举/typedef/等),它都会对调用者产生语义差异?
【问题讨论】:
-
只是出于好奇,你为什么需要一个指向未定义结构的指针?如果它是未定义的,那为什么不直接使用 void* 呢?
-
@John:因为我还没有为
T的定义包含适当的头文件,但是我仍然希望我的代码能够编译,因为我不明白为什么@987654327 很重要@是。 -
@John:这是家常便饭。当您[在代码中的那个点]只需要一个声明时,为什么要引入一个[可能很重的]定义?