Tag: typedef

结构内部结构

我必须创建一个人,每个人都应该有一个冰箱。 这是最好的方式吗? 如果是这样,我做错了什么? 提前致谢。 typedef struct { int age; struct FRIDGE fridge; } PERSON; typedef struct { int number; } FRIDGE; FRIDGE fr; fr.number=1; PERSON me; me.name=1; me.fridge = fr; 这给了我以下错误: 错误:字段’冰箱’的类型不完整

如何释放仅包含指针的结构

我有一个结构,你在下面看到: typedef struct _List { Person *person; // pointer for people list DoList *do; // Kinda timer, for checking list in some intervals } List; 有没有必要释放这个结构? 如果是这样,我怎么能免费呢?

基本的typedef操作数语法

鉴于: typedef type-declaration synonym; 我可以看到: typedef long unsigned int size_t; 将size_t声明为long unsigned int的同义词,但是我(知道它确实如此)无法确切地看到如何: typedef int (*F)(size_t, size_t); 将F声明为pointer to function (size_t, size_t) returning int的同义词 typedef的第一个例子中的两个操作数(type-declaration, synonym)是long unsigned int和size_t 。 在F的声明中,typedef的两个参数是什么,或者是否存在typedef的重载版本? 如果C和C ++之间存在相关的区别,请详细说明,否则我主要对C ++感兴趣,如果这有帮助的话。

struct typedef中的声明规则

我正在阅读’C编程语言’,并遇到了关于struct的 typedef的问题。 代码是这样的: typedef struct tnode *Treeptr; typedef struct tnode { /* the tree node: */ char *word; /* points to the text */ int count; /* number of occurrences */ struct tnode *left; /* left child */ struct tnode *right; /* right child */ } Treenode; 到我们写的时候 typedef struct tnode *Treeptr; tnode仍未声明,但我们没有得到任何编译错误,但是当我们将上面的语句更改为: typedef Treenode […]

C / C ++中的typedef是否真的通过组合复合类型(例如int *)来创建一个NEW类型?

最近我发现我的代码中的typedef与我提出的完全不同。 像这样的例子: typedef int *ptype; ptype v1 = 0, v2 = 0; 结果:v1和v2都被定义为指向int类型的指针。 但是如果你只是在第二句中用int *替换ptype为int *v1 = 0, v2 = 0; 或int* v1 = 0, v2 =0; ,只有v1是指针,v2是普通的int 。 似乎typedef不做简单的替换。 更重要的是,当涉及到复杂的修饰符时: typedef int *ptype; const ptype v3 = 0; 结果将是:v3是一个const指针,如果我们写const int *v3 = 0; ,则不是指向const int的指针const int *v3 = 0; 。 在上面的代码中, const表示整个ptype的修饰符,而不是ptype的int 。 因此,看起来像typedef结合了复合类型int*并创建了一个新类型。 […]

struct的access元素传递给void *指针

我正在使用二叉搜索树数据结构来对具有类型定义的一系列结构进行排序: typedef struct { char c; int index; } data_t; typedef struct node node_t; typedef node { void *data; node_t *left; node_t *right; } node_t typedef来自为此目的提供给我的库,可能带有void *指针以确保多态性。 node将传递给函数: static void *recursive_search_tree(node_t *root, void *key, int cmp(void*,void*)) 在recursive_search_tree函数中,我希望能够修改代码以使用index元素作为条件来查找最接近字符数组的线性传递索引的匹配,这最终将涉及传递给*key的data_t *key和key->index在函数内被访问。 问题 是否可以访问key->index其中key是指向data_t结构的void* ,或者只有在data_t被声明为key的类型时才可能这样data_t ? 我试图做后者,但即使将指针强制转换为int似乎也没有通过编译器。

Typedeffing一个函数(不是函数指针)

typedef void int_void(int); int_void是一个取整数并且不返回任何内容的函数。 我的问题是: 它可以“单独”使用,没有指针吗? 也就是说,是否可以将其用作简单的int_void而不是int_void* ? typedef void int_void(int); int_void test; 这段代码编译。 但是可以test某种方式使用或分配给某些东西(没有演员表)? /* Even this does not work (error: assignment of function) */ typedef void int_void(int); int_void test, test2; test = test2;

如何键入一个函数指针,该函数指针将自己类型的函数作为参数?

示例:一个函数,它接受一个函数(带有一个函数(那个……)和一个int)和一个int。 typedef void(*Func)(void (*)(void (*)(…), int), int); 它以递归方式爆炸(…) 。 是否有一个根本原因无法完成或是否有另一种语法? 在我看来,没有演员阵容应该是可能的。 我真的想传递一个调度表,但如果我可以通过这种类型,我可以想出来。

变量声明导致分段错误

我不明白程序中出现分段错误的原因。 代码可在此处获得 在第29行,我声明了一个PclImage变量,使用typedef定义,类似于struct数组。 PclImage类型的定义如下(来自src / libMyKinect.h文件): typedef struct { int valid; float x; float y; float z; unsigned char blue; unsigned char green; unsigned char red; } Point3d; typedef Point3d PclImage[480][640]; 该程序运行良好,但是当我声明第二个PclImage ,我一启动程序就会出现分段错误。 例如,如果在第一个文件的第30行,我添加了PclImage bgPcl; 程序立即崩溃。 谁能帮我?

重新定义typedef

我可能做错了,这是一个很大的问题,为什么它在一个编译器中工作而不是另一个编译器。 我有一个大型的C应用程序,我试图遵循不包括其他头文件中的头文件的样式。 相反,使用前向声明; 因此我正在尝试以下方面。 // in Ah typedef struct A_ A; typedef struct B_ B; struct A_ { double a; B *b; }; // in Bh typedef struct B_ B; struct B_ { int c; }; // in Ch typedef struct A_ A; typedef struct B_ B; void function_do_something(A*, B*); // in Cc #include “Ah” […]