在头文件中使用一个结构“未知类型”错误

在头文件中使用一个结构“未知类型”错误,第1张

概述我在Kubuntu中使用Kdevelop. 我已经在我的datasetup.h文件中声明了一个结构: #ifndef A_H#define A_Hstruct georeg_val { int p; double h; double hfov; double vfov;};#endif 现在我在main.c文件中使用它 int main(){ 我在Kubuntu中使用Kdevelop.
我已经在我的datasetup.h文件中声明了一个结构:
#ifndef A_H#define A_Hstruct georeg_val {    int p;    double h;    double hfov;    double vfov;};#endif

现在我在main.c文件中使用它

int main(){    georeg_val gval;    read_data(gval); //this is in a .cpp file}

我收到以下错误

georeg_chain.c:7:3: error: unkNown type name ‘georeg_val’

(这是在georeg_val gval;行)

如果有任何人可以帮助我解决这个错误,我将不胜感激.

解决方法 在C中有两种声明结构的可能性:
struct STRUCT_name {} ;

要么

typedef struct {} STRUCT_AliAS;

如果您使用第一个方法(给struct一个名称) – 您必须通过将其明确标记为一个结构体来定义变量:

struct STRUCT_name myStruct;

但是,如果使用第二个方法(给struct一个别名),那么可以忽略struct IDentifIEr – 编译器可以推断出只有它的别名给出的变量的类型

STRUCT_AliAS myStruct;

奖金积分:
您可以声明具有它的名称和别名的结构体:

typedef struct STRUCT_TAG {} STRUCT_TAG;// here STRUCT_name == STRUCT_AliAS

然后在变量定义中,您可以使用第一种或第二种方法.为什么两个世界都很好?结构别名可以使结构体变量定义更短 – 这是一件好事.但是结构名称让我们做出前进的声明.在某些情况下,这是不可缺少的工具 – 考虑到在结构体之间有循环引用:

struct A {  struct B * b;}struct B {  struct A * a;}

除此之外,这种架构可能有缺陷 – 当以第一种方式声明结构(使用名称)时,此循环定义将被编译.结构指针通过将其标记为struct来明确引用.

总结

以上是内存溢出为你收集整理的在头文件中使用一个结构“未知类型”错误全部内容,希望文章能够帮你解决在头文件中使用一个结构“未知类型”错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存