我见过许多程序,包括如下所示的结构
typedef struct
{
int i;
char k;
} elem;
elem user;
Run Code Online (Sandbox Code Playgroud)
为什么经常这么需要?任何具体原因或适用范围?
首先,我用谷歌搜索了错误并阅读了这些答案:
但是他们都没有帮助我,所以我们来了。
问题存在于这两种结构之间,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
Run Code Online (Sandbox Code Playgroud)
prx_data.c
#include "prx_data.h"
char *get_query(struct prx_data_s *dt)
{
return dt->keyquery;
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下示例编译对象:
clang -c prx_data.c -o prx_data.o -std=c11 -g -Wall
Run Code Online (Sandbox Code Playgroud)
这是输出错误:
In file …Run Code Online (Sandbox Code Playgroud)