警告:在此功能之外不会显示’…’的声明[-Wvisibility]
发布时间:2020-12-16 09:21:34 所属栏目:百科 来源:网络整理
导读:首先,我用Google搜索了错误并阅读了这些答案: I don’t understand why compiler is giving me error with this code C : Warning about visibility of a struct 但他们都没有帮助我,所以我们在这里. 问题存在于这两个结构之间,prx_data_s存储通用数据,prx_
首先,我用Google搜索了错误并阅读了这些答案:
> I don’t understand why compiler is giving me error with this code 但他们都没有帮助我,所以我们在这里. 问题存在于这两个结构之间,prx_data_s存储通用数据,prx_ops_s定义指向将使用该数据的函数的指针. 我将简化示例的来源: prx_data.h #ifndef PRX_EXAMPLE_DATA_H #define PRX_EXAMPLE_DATA_H #include "prx_ops.h" struct prx_data_s { enum prx_op_t op; char *keyquery; }; char *get_query(struct prx_data_s *dt); #endif prx_data.c #include "prx_data.h" char *get_query(struct prx_data_s *dt) { return dt->keyquery; } prx_ops.h #ifndef PRX_EXAMPLE_OPS_H #define PRX_EXAMPLE_OPS_H #include "prx_data.h" enum prx_op_t { PRX_EXAMPLE_OP = 2 }; struct prx_ops_s { int (*dec) (struct prx_data_s *); }; #endif 我正在尝试使用以下示例编译上述示例中的对象: clang -c prx_data.c -o prx_data.o -std=c11 -g -Wall 这是输出错误: In file included from prx_data.c:1: In file included from ./prx_data.h:4: ./prx_ops.h:11:24: warning: declaration of 'struct prx_data_s' will not be visible outside of this function [-Wvisibility] int (*dec) (struct prx_data_s *); ^ 欢迎所有帮助,谢谢:) 解决方法
您的标头中存在循环依赖项问题:
prx_data.h: #include "prx_ops.h" <<< Here we do not yet see the struct definition prx_ops.h: #include "prx_data.h" <<<< Nothing will be included due to inclusion guards. struct prx_ops_s { int (*dec) (struct prx_data_s *); <<<< Here a new struct type is declared. }; later back in prx_data.h: struct prx_data_s { enum prx_op_t op; char *keyquery; }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |