加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

警告:在此功能之外不会显示’…’的声明[-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
> C : Warning about visibility of a struct

但他们都没有帮助我,所以我们在这里.

问题存在于这两个结构之间,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;
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读