调用函数(在C中链接)

时间:2011-10-15 02:31:48

标签: c

我正在尝试从.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 );

但是编译器告诉我文件名是未声明的。有什么帮助吗?

3 个答案:

答案 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文件中,该函数应该能够在编译时解析