Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 通过一个结构数组,数组类型有不完整的元素类型_C - Fatal编程技术网

C 通过一个结构数组,数组类型有不完整的元素类型

C 通过一个结构数组,数组类型有不完整的元素类型,c,C,我正在写一个小型网络路由器。我想编写一个名为findulote的通用函数,它将接受一个字符串作为路由名称和一个要搜索的结构数组 路由器.c struct route { char *routeName; int routeId; }; int findRoute(char find[], struct route list[]) { // do some strcmp // return id of found route } enum someRoutes {

我正在写一个小型网络路由器。我想编写一个名为
findulote
的通用函数,它将接受一个字符串作为路由名称和一个要搜索的结构数组

路由器.c

struct route 
{
   char *routeName;
   int routeId;
};
int findRoute(char find[], struct route list[])
{
   // do some strcmp 
   // return id of found route
}
enum someRoutes
{
  Route1,
  Route2
};
struct route someRoute[] = {
   {"route1", Route1},
   {"route2", Route2}
}
int routeId = findRoute("route1", someRoute);
switch(routeId){
   //etc
}
它会像这样使用

子程序.c

struct route 
{
   char *routeName;
   int routeId;
};
int findRoute(char find[], struct route list[])
{
   // do some strcmp 
   // return id of found route
}
enum someRoutes
{
  Route1,
  Route2
};
struct route someRoute[] = {
   {"route1", Route1},
   {"route2", Route2}
}
int routeId = findRoute("route1", someRoute);
switch(routeId){
   //etc
}
我发现了错误
数组类型的元素类型不完整
,但仅在我的H文件中

路由器.h

int findRoute(char find[], struct route list[]);

我的猜测是,我没有给
列表
参数指定大小,但我什么时候给它似乎并不重要

将结构路由定义从
router.c
移动到标头:

路由器.h:

struct route 
{
   char *routeName;
   int routeId;
};

并在
subRouter.c
中包含
router.h

将结构路由定义从
router.c
移动到标头:

路由器.h:

struct route 
{
   char *routeName;
   int routeId;
};

并将
router.h
包含在
subRouter.c

中,该结构定义属于通过-
#包含
拉入到两个源文件的头中。将其移动到router.h中的函数decl上方,并将其包含在两个.c文件中。在h文件中出现错误是什么意思?头文件不应该被编译。我唯一的问题是头文件中没有包含
struct
。@BarryBones41-只是好奇,如果一个.c文件中的struct成员的值发生了变化,是否需要在另一个.c文件中查看和使用该值?如果是这样,您应该在头文件中创建一个具有
extern
作用域的结构实例,在两个源文件中都包含
,并在一个源文件中初始化它。然后,您就有了一个全局可见的结构实例,它允许每个源文件对成员具有读写权限。该结构定义属于通过-
#include
拉入到两个源文件的头中。将其移动到router.h中的函数decl上方,并将其包含在两个.c文件中。在h文件中出现错误是什么意思?头文件不应该被编译。我唯一的问题是头文件中没有包含
struct
。@BarryBones41-只是好奇,如果一个.c文件中的struct成员的值发生了变化,是否需要在另一个.c文件中查看和使用该值?如果是这样,您应该在头文件中创建一个具有
extern
作用域的结构实例,在两个源文件中都包含
,并在一个源文件中初始化它。然后您有一个全局可见的结构实例,它允许每个源文件对成员具有读写权限。