c - 为什么在函数内部声明后结构不存在?
问题描述
我已经尝试了很多简单的例子,但没有任何工作。
我的目标是有一个函数在内部声明一个结构,设置结构的值,然后返回结构。
struct getData(void){
typedef struct{
int count1;
int count2;
} MyStruct;
MyStruct myData;
myData.count1 = 5;
myData.count2 = 6;
return myData;
};
int main(void) {
struct myData = getData()
printf("count1: %i", myData.count1);
printf("count2: %i", myData.count2);
}
我发现的每个示例都与此类似,但由于某种原因,它没有找到我的名为 MyStruct 的结构。确切的错误是:
error: expected identifier or ‘(’ before ‘void’
struct getData(void){
^~~~
我不断收到的错误让我认为它不喜欢函数内部的结构。
解决方案
您的问题似乎是对struct
关键字的使用感到困惑。你不需要struct myData
声明一个名为的变量myData
,它是struct
类型的,因为没有真正的struct
类型。您所做的是struct myData <SOMETHING>
定义<SOMETHING>
为一个名为 的新数据类型struct myData
。然后你可以说struct myData dat;
,从而声明它dat
是一个类型的变量struct myData
。
你也在顶部展示了同样的困惑,你有struct getData(void)
......你试图声明getData
一个返回结构的函数,但你真的必须做一些事情,比如struct myData getData(void)
声明一个返回类型的函数struct myData
。
推荐阅读
- android - Jetpack Navigation:任何片段都应该能够导航到任何片段
- node.js - 与副本集的猫鼬连接不起作用
- csv - 在 PySpark 中写入镶木地板的问题
- python - dict列表中的值总和错误
- c - 为什么我的编译器会创建重复的汇编函数
- hadoop - 具有活动备用名称节点的hadoop集群+编辑日志中的间隙
- python - 网格搜索中具有第三个参数的自定义记分器
- postgresql - Postgres 复制命令使用引用选项导入 .csv 在目标表中创建更多双引号
- kubernetes - Kubernetes Ingress Controller:调用 webhook 失败,拨打 tcp connect:连接被拒绝
- r - R:如何将列表数据列表转换为数据框