gpt4 book ai didi

c - 如何在 C 编程中访问不完整类型的成员

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:51 26 4
gpt4 key购买 nike

假设我在我的 child.h 文件中声明了以下不完整的类型

typedef struct child * child_ptr;

我的 child.c 文件中有 incomplete complete 类型定义

struct child {
char * type;
int age;
};

假设这是我的 main.c 文件

// some code before the main 
int main( void ) {
struct child *child = new_child( "Boy", 5 );
child->type; // i know i will get an error
}

与 C++、Java、C# 不同,C 对封装类型的支持有限。 C 提供的唯一封装工具是不完整的类型。这些是描述对象但缺乏确定其大小所需信息的类型。这就是我编译程序后会出错的原因。那么,有没有办法访问它们?

我认为这样做的一种方法是在我的 child.h 文件中声明“公共(public)”函数。例如,一个函数接受一个指向子对象的指针并返回存储在“type”成员变量中的值;但是,这会阻止数据隐藏。如果我将该结构移动到 child.h 文件,则默认情况下所有成员都是公开的。同样,这将防止数据隐藏。

最佳答案

您可以在 child.h 文件中创建函数原型(prototype),它将 struct child* 作为参数并返回不同的成员。

例如:

char * get_name(child_ptr chld);

child.c文件中,struct child的定义是可见的,在main.c文件中使用它就像所以:

child_ptr chld = new_child( "Boy", 5 );
char* child_name = get_name(chld);

关于c - 如何在 C 编程中访问不完整类型的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com