c - c中的类型声明和声明结构
问题描述
我在名为的头文件中有以下内容vector.h
typedef struct coordinates coordinates;
坐标结构应该有两个变量。x
和y
如何在不更改头文件中的任何内容的情况下x
包含这两个变量?y
我的想法是写以下内容main.c
coordinates{
int x;
int y;
};
我在上面写是因为我已经typedef struct coordinates
在vector.h中写了一个。所以,如果我再写一次,它就会重复。但是上面的语法本身是错误的,因为编译器会抛出错误。如果我理解结构错误或帮助我如何在结构中声明变量,请帮助我。
解决方案
我在名为 vector.h 的头文件中有以下内容
typedef struct coordinates coordinates;
这是将标识符声明coordinates
为 type 的别名,struct coordinates
就该声明而言,它本身就是“不完整类型”。
如何在不更改头文件中的任何内容的情况下包含这两个变量 x 和 y?
在struct coordinates
您可以访问成员之前,需要使用定义“完成”:
struct coordinates {
int x;
int y;
};
struct coordinates
无论您访问该类型实例的成员,无论是通过类型名称还是通过其别名,此类定义都需要在范围内coordinates
。通常将这样的定义放在头文件中,以便在翻译单元之间适当共享,但如果您只需要访问一个文件中的成员(或结构的整体大小),那么您可以改为放置上面的类型定义仅在该文件中。或者,您可以在每个想要访问成员的翻译单元中复制相同的定义,但这种形式很差并且难以维护。
推荐阅读
- pid - 为 microbit 制作 PID 脚本
- python - 创建嵌入矩阵时如何确定 num_words 变量?
- bash - 如何在 GitLab 中检索给定组名的对应组 ID
- python - 您可以将属于单个项目的不同 django 应用程序容器化到不同的 docker 容器中吗?
- environment-variables - “仅支持绝对 URL”当获取 webhooks Nextjs
- apache-zookeeper - 如何在 Apache Zookeeper ver3.6.2 中禁用纯文本端口
- python-3.x - Librosa.resample() 重新采样到低于需要的速率
- widget - 动态 google.colab.widgets.TabBar
- json - 通过数组中的 json 对象属性进行 SQLite 查询
- c - 如何使用 IMG_Load 将 sdl 中的图像加载到 c 中的表面?