【发布时间】:2014-09-23 16:26:56
【问题描述】:
我需要将文件“file1.c”中定义的结构数组传递给一个函数,比如“myFunc()”,该函数在另一个文件“file2.c”中定义。问题是我不知道如何在我的头文件“header.h”或我的 file2.c 中的函数本身中设置 myFunc() 的原型,因为该结构只会在 file1.c 中定义。这是一个例子。
file1.c
#include "header.h"
#define dim 30
#define searchAgents 30
struct Wolf{
double pos[dim];
double fitness;
}Pack[searchAgents];
int main(){
myFunc(Pack); //not sure it's ok
return 0;
}
file2.c
#include "header.h"
void myFunc(struct Wolf Pack[]){ //I don't know how to set this argument
Pack[0].pos[0] = 1; //just an example
}
header.h
#ifndef HEADER_H_
#define HEADER_H_
void myFunc(struct Wolf); //I don't know how to set this prototype
#endif
我读过有关将结构传递给函数的信息,但是当您在另一个文件中定义函数时,情况就不同了。感谢您的宝贵时间。
【问题讨论】:
-
你所做的看起来不错,只是你应该在 header.h 中说
void myFunc(struct Wolf Pack[]);。可能您还希望在其中定义searchAgents,以便您知道myFunc() 中有多少只狼。 (您传递的不是结构,而是指向Pack数组中第一个结构的指针。) -
它输出这个:错误:数组类型有不完整的元素类型
-
你需要在header.h中插入结构体。 File2.c 不知道这个结构
-
函数调用没问题吧?因为它输出这个:错误:形式参数1的类型不完整 myFunc(Pack);