我正在尝试从.h和另一个.c文件调用函数
尝试在这样的行中调用该函数: image = getImage(filename,& dim);
我已将主要功能顶部的图像定义为
QTnode* image;
来自struct的
struct imgnode{
int numb; //number of the image
int dim; //dimension of the image
char filename[20]; //name of file
QTnode *qt;
Imgnode *next;
Imgnode *prev;
};
该函数在另一个.h中称为
QTnode *getImage(char *filename, int *dim );
但是编译器告诉我文件名是未声明的。有什么帮助吗?
答案 0 :(得分:2)
大声笑我昨天帮助我的朋友做了这件事。 COMP1917分配嗯?
你应该传入你从stdin读取的文件名,而不是传递给你的结构中的文件名
回到C,定义一个结构并不意味着你有这个结构并且在结构中有这些成员。您仍然通过执行以下操作声明并创建结构实例:
struct imgnode node;
然后您可以通过以下方式访问该成员:
node.filename
或更常见的是:
struct imgnode* nodePtr;
nodePtr->filename
答案 1 :(得分:1)
image = getImage(filename,&dim);
// ^^^^^^^^ Check where this variable declared.
// If declared check whether it is accessible from this scope.
编译器不知道在当前翻译单元中传递参数的变量filename
是什么。 filename
应该是声明的部分,并且应该在函数调用时可访问。检查一下。
如果您尝试访问struct成员,那么您应该有实例来访问它们。
image = getImage(strucInstance.filename,&(strucInstance.dim) );
答案 2 :(得分:0)
你通常做的就是这样的事情
所以你有一个在foo.c中定义的函数
void foo()
{
/* do nothing */
}
您将此行放在头文件中 - 由包含警卫
保护void foo();
现在,您将该头文件包含在其他c文件中,该函数应该能够在编译时解析