Tag: struct

Swift使用c结构

对不起标题,我找不到用几句话来形容我的问题。 我已经知道swift可以使用c编写的struct。 例如 在Bridging-Header.h中 typedef struct { int x; int y; } Pointer; 然后我可以直接使用Pointer。 但就我而言,我有一个用C语言编写的库。有许多带有隐藏工具的结构。 例如: 在Briding-Header.h中 typedef struct Pointer Pointer; 我不能再使用Pointer了,得到了未知类型。 在我的库中,Pointer用作 create_pointer(Pointer **pointer); 任何帮助表示赞赏! PS我没有定义struct Pointer的.h文件。 关于Pointer的所有细节都是隐藏,例如通过函数访问它们 int getx(Pointer *pointer); 这是我的完整测试代码: user_input.c #include #include “user_input.h” struct Pointer { int x; int y; }; void get_user_input(int *user_input) { scanf(“%i”, user_input); } void init_pointer(Pointer *point) […]

结构变量不会因赋值而改变

struct st { int a1 : 3; int a2 : 2; int a3 : 1; } void main(void) { x.a3 = -1; if (x.a3 == -1) printf(“TRUE\n”); else printf(“FALSE\n”); x.a3 = 1; if (x.a3 == 1) printf(“TRUE\n”); else printf(“FALSE\n”); } 如果是‘x.a3 = -1;’ 首先,如果是真 。 但是,为什么‘x.a3 = 1’在第二个没有变化? 它仍然是x.a3 = -1。 和 如果我输入‘x.a3 = 1;’ […]

使用fork()和exec()在C中执行命令行管道

我询问了我的代码,答案是不正确的。 在这种情况下perror使用现在我想知道我如何调整和改进,以便我不再有这些错误? execvp不会返回,除非发生错误,所以如果一切正常,封闭函数将永远不会返回。 由于先前的循环,值’i’已经超过’cmd’中数组的末尾,因此’cmd [i] .argv [0]不正确。 cmd不是struct命令的数组,因此不应编入索引 cmd.argv中的第一个条目是指向最后一个条目为NULL的数组的指针。 execvp将在该(并且只有那个)数组上工作,因此所有其他指向数组的指针都将被忽略 代码中存在大量错误。 例如,第一次通过fork_pipe()’in’中的循环包含垃圾。 传递给execvp()的第二个参数需要是一个指向字符串的指针,带有一个最终的NULL指针。 缺少最后的NULL指针,还有很多问题 #include #include #include #include #include #include struct command { const char **argv; }; /* Helper function that spawns processes */ int spawn_proc (int in, int out, struct command *cmd) { pid_t pid; if ((pid = fork ()) == 0) { if […]

访问struct:derefrencing指向不完整类型的指针

当我尝试使用并访问指向我的结构的指针时,我不断收到”dereferencing pointer to incomplete type”的恼人信息…. 例如在我的user.h文件中,我有这个typedef : typedef struct FacebookUser_t* User; 在我的user.c文件中包含user.h我有这个结构: struct FacebookUser_t {…}; 所以,当我需要一个指向该结构的指针时,我只使用User blabla; 它似乎工作,我将它添加到通用列表作为Element ,它是void* ,这是list.h的typedef: typedef void* Element; 当我从包含Element ( User )的列表中找回一个节点时,我无法访问它的成员,我做错了什么? 谢谢!

在这些声明中,以下表达式是什么类型,它们是否正确?

struct place { char name[80+1]; double latitude; double longitude; }; struct node { struct place city; struct node *next; }; struct node *head; head head -> city head -> next head -> city -> name head -> next ->city.name 这些任务总是让我在考试中失分,任何人都可以解释一下吗? 它询问提到的变量是什么类型,我想像head这样的东西只是一个指向整个结构node值的指针?

结构混乱

我想创建一个函数,它获取一本书的标题和作者,如果它可用或不可用则返回0或1,通过将它们与给定的结构数组进行比较…..编译器显示: structs.c:10:28: error: expected ‘)’ before ‘title’ structs.c: In function ‘main’: structs.c:59:21: error: expected expression before ‘bookRecord’ structs.c:60:13: error: expected expression before ‘bookRecord’ structs.c:61:9: warning: implicit declaration of function ‘requestBook’ structs.c:61:23: error: expected expression before ‘bookRecord’ 这是代码: #include #include #include #define TRUE 1 #define FALSE 0 #define NUM_BOOKS 5 int requestBook(bookRecord title[],bookRecord author[]){ /* compiler […]

使用for循环创建链接列表

这是我的结构 struct ListItem{ int data; struct ListItem *next; }; 假设链表的第一个节点将有data = 0,我想写一个for循环,创建一个大小为5的链表,但我不知道如何工作 我尝试了以下内容 int main(int argc, char* argv[]){ struct ListItem a; a.data = 0; for (int i = 1; i next; } } 但结果是a.data = 0和a.next-> data = 4

返回指向C中结构的指针

该程序返回一个指向结构的指针 。 当我打印内容时, 名称没有正确显示,其他两个变量正在正确打印。 可能是什么问题呢? 这是C中的代码 #include struct student { char name[20]; int marks; int rank; }; struct student stu; struct student *create(); void main() { struct student *ptr; ptr = create(); printf(“%s\t %d\t %d\t”,ptr->name,ptr->marks,ptr->rank); } struct student *create() { struct student stu = {“john”,98,9}; struct student *ptrr; ptrr = &stu; return ptrr; }

C中的typedef stuct问题

我面临一个奇怪的问题我已经定义了一个C头文件中的结构: typedef struct iRecActive{ char iRecSID[32]; unsigned char RecStatus; int curSel; }iRecAcitve_t; 但是当我在另一个文件中使用相同的结构时,编译器无法识别结构,即使我已经仔细检查过我已经包含了它的头文件。 以下是错误: :错误C2065:’iRecActive_t’:未声明的标识符 以下是我定义结构的文件的完整代码 #ifndef _TS_HTTP_APPLICATION_H_ #define _TS_HTTP_APPLICATION_H_ #ifdef __cplusplus extern “C” { #endif typedef struct iRecActive{ char iRecSID[32]; unsigned char RecStatus; int curSel; }iRecAcitve_t; int startHTTPServer(int HTMLserverPort); int closeHTTPServer(); int openTS_SegmenterN(); void pushTSDataN(unsigned char* TSData, int len); void closeTS_SegmenterN(); void removeAllConnections(); #ifdef […]

如何将字符值从结构写入串口并转换为整数值?

struct MemoryTag1; typedef struct MemoryTag1{ char a[8]= {‘+’,’0′,’2′,’6′,’.’,’5′,’EA’,’\r’}; // setpoint temperature value char b[8]= {‘-‘,’0′,’2′,’4′,’.’,’5′,’EB’,’\r’}; char c[6]= {‘+’,’0′,’2′,’0′,’EC’,’\r’}; }Memory1; //这是一个消息结构,我想通过串行接口(RS232)传输,然后转换为整数值。 请指导我。