Tag: typedef

从另一个文件调用节点

我知道在编程中,保持简单并能够改变是很重要的。 所以对我而言,这意味着使用不同的文件和function并将它们分开以便更容易隔离故障并提高可读性非常重要。 我是C的新手,我不明白该怎么做。 我有我的nodeTest.h #include #include struct nodeTest { int data; struct nodeTest* next; }; 然后我有另一个文件试图调用该结构 #include #include #include “nodeTest.h” nodeTest* first = (nodeTest*)malloc(sizeof(nodeTest)); 我收到一个错误,说nodeTest未声明(不在函数中)。 这是什么意思,为什么我不能使用include来包含struct或typedef?

从另一个头文件中的一个头文件构造

这段时间我已经很长时间了,但仍然没有看到哪里可能是个问题。 我们有头文件Player.h #ifndef PLAYER_H_ #define PLAYER_H_ typedef struct player { char *name; int gameId; int socketfd; int points; int state; }player_struct; #endif /* PLAYER_H_ */ 让我们有第二个头文件Game.h #ifndef GAME_H_ #define GAME_H_ #include “Player.h” #define NUMBEROFPLAYERS 2 typedef struct game { //Here }game_struct; #endif /* GAME_H_ */ 我的typedef的目的是使用类似这样的类型:player_struct: 这是源文件Player.c – 这是有效的。 #include “Player.h” player_struct *create_player { player_struct […]

将主要定义的类型传递给C中的标题

所以,正如标题所说,我应该在主文件中定义一个类型,并以某种方式将其传递给标题。 我试图以任何方式做到这一点,但我没有想法。 我这样定义:“typedef int DATA;” 并在标头中将其用作数据类型。 我尝试在包含标题之前插入typedef,但仍然无法识别。 有任何想法吗? 或者甚至不可能以这种方式做到这一点? #include #include typedef int DATA; #include “PriorityQueue.h” int main(){ int priority; DATA value; 这是我的主要开始 #ifndef PRIORITY_QUEUE_H_ #define PRIORITY_QUEUE_H_ struct priorityQueue{ int priority; DATA value; struct priorityQueue *next; }; typedef struct priorityQueue LINK; void createEmpty(LINK **head); void add(LINK **head, int p, DATA v); void deleteElement(LINK **head, int […]

指向C中的自构造

给出以下代码: typedef struct elementT { int data; struct elementT *next; } element; 为什么有必要做struct elementT *next而且我不能在struct声明本身里面做element *next ? 是因为它还没有申报吗?

在具有两种体系结构的嵌入式系统中使用的整数和布尔类型

我正在为嵌入式系统编写一些软件,主要是在C语言中。它恰好是双核TI平台,我使用的是一些供应商和其他库。 处理器有一个32位的ARM内核,可以进行字节访问( sizeof(char) == 1和sizeof(int) == 4 :8和32位)和一个C28内核,它是一个32位CPU sizeof(char) == sizeof(int) == 1 :两者都是16位( 是的,真的 )。 我打算避免使用像int和char这样的类型来支持我总是明确我在做什么。 无论如何我会计划这个,但是当“char”有点叛逆并且不总是8位时我会加倍。 但是,我有很多整数和布尔值定义(和浮点数,但我们不用担心它们)可供我使用,具体取决于我包含的确切数量和数量: 在ARM方面: // from the ARM compiler’s include dir typedef signed char int8_t; typedef unsigned char uint8_t; typedef short int16_t; typedef unsigned short uint16_t; typedef int int32_t; typedef unsigned int uint32_t; typedef long long int64_t; typedef unsigned […]

为什么允许指向不完整类型的指针而不是不完整类型的变量?

为什么以下是合法的: typedef struct a aType; struct a { int x; aType *b; }; 以下非法: void main() { typedef struct a aType; aType someVariable; struct a { int x; aType *b; }; } 我只是好奇,因为在每种情况下它都是前向引用,据我所知,至少对于函数和变量,前向引用是不合法的。 另外,对于C ++,这个问题的答案是否相同?

用于不透明结构的C typedef编码样式

所以我理解typedef对于只能由访问器函数操作的不透明结构是可接受的。 这是使用在访问器函数中自引用的opaque typedef结构的适当方法吗? typedef struct foo { struct foo *bar; int member; } foo1; foo1 * blah1 = (foo1*) malloc(…); blah1->bar->member = 999; 替代方案是这样的: typedef struct { struct foo* bar; int member; }foo; 所以当你做这样的事情时: foo * blah1 = (foo*) malloc(…); blah1->bar->member = 999; 你会收到这个错误: dereferencing pointer to incomplete type

C vs C ++中的typedef和struct命名空间

我试图在一些新的C ++中使用一些旧的C库。 该库的头文件使用D. Hanson的“C接口和实现”实现隐藏成语: #define T MyAST typedef struct T *T; 接近我可以说,这用C编译,因为在C中,struct struct和typedef名称在不同的名称空间中但是它不能用C ++编译( extern “C” { #include “MyAST.h” } ),因为typedef和struct names在同一名称空间中。 conflicting declaration ‘typedef struct MyAST* MyAST’ 我想我注定要将struct def移到标题中并放弃使用该技术,但我真的不想(这个成语用在很多代码中,有些是我的,有些不是)并认为我是在这里查看是否有人有任何见解。 PS:如果你不知道这个成语,它可以让你将结构定义保存在实现C文件中,然后接口的用户( MyAST.h )无法访问结构,他们必须在实现中使用你的函数。

将CFIndex转换为NSUInteger?

如何将typedef signed long CFIndex转换为typedef unsigned int NSUInteger ? 如果我使用CFIndex作为NSUInteger类型的参数,是否可以。 我还没有投入它,而编译器似乎并不介意。 编译器是否只为我进行转换?

Typedef一个位域变量

我想要一个1位整数的typedef,所以我虽然这个typedef int:1 FLAG; 但是我遇到了错误,我有办法吗? 谢谢