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
作用域的结构实例,在两个源文件中都包含,并在一个源文件中初始化它。然后您有一个全局可见的结构实例,它允许每个源文件对成员具有读写权限。