在头文件中使用一个结构“未知类型”错误
我在Kubuntu中使用Kdevelop.
我已经在我的datasetup.h文件中声明了一个结构: #ifndef A_H #define A_H struct 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_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来明确引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |