今天,我刚刚注意到C结构中的一个声明,说实话我起初就像是WTF。就像;
struct foo {
void *private;
//Some other members
};
信不信道这个结构正在编译而没有任何错误。那么添加这样一行(void * private)的目的是什么?
答案 0 :(得分:3)
在纯C中没有private
关键字,所以上述内容完全合法,尽管这是一个非常糟糕的主意。
这可能是无效的C ++,而C ++编译器肯定会产生错误。
答案 1 :(得分:1)
void*
经常用于隐藏所使用的实际数据类型,有效地隐藏了界面中的一些实现细节。
答案 2 :(得分:0)
实际上你偶然发现了C和C ++之间的重要区别,即结构的实现方式。
在C中,结构包含只能包含原始数据类型和复合数据类型,而C ++结构提供更多功能,因为C ++中的结构类似于C中的结构,因此它们提供了其他功能,例如
简而言之,上面的代码是有效的C,但无效的C ++。