使用标题和其他C文件在C中包含函数

时间:2010-09-20 10:43:53

标签: c

尝试使用以下代码从C中的另一个文件调用函数:

的main.c

#include "display.h"
int main()
{
display_options();
display_price();

return 0;
}

display.h

int display_options(void);
int display_price(void);

display.c

#include <stdio.h>

int display_options()
{
printf("Welcome to the pizza parlor\n");
printf("What size pizza would you like? (in inches)");

return 0;
}

int display_price()
{
printf("Your pizza will cost 0.00\n");

return 0;
}

我在这里创建了一个示例http://www.faqs.org/docs/learnc/x307.html但它似乎没有工作我在codeblocks 10.05中在main.c中调用的函数中收到一条错误消息,说“未定义引用'display_options'”< / p>

5 个答案:

答案 0 :(得分:3)

看起来您正在编译main.c文件。

确保编译为:

gcc -Wall main.c display.c

并将其运行为:

./a.out

答案 1 :(得分:1)

确保#include "display.h"也位于display.c文件的顶部。由于您使用的是Code :: Blocks,因此一旦您执行此操作,它将自动为您编译main.cdisplay.c

答案 2 :(得分:0)

gcc允许您一步编译和链接一个简单的应用程序(只有1个.c文件)。

对于具有多个.c文件的应用程序,您需要将所有源(.c)文件编译为对象(.o)文件。然后需要将它们连接在一起。

所以你需要编译每个.c文件

gcc -c main.c
gcc -c display.c

然后使用

链接它们
gcc -o display main.o display.o

这将创建二进制文件display

可以使用Makefile自动执行此操作。然后,只需调用make即可构建整个事物。

答案 3 :(得分:0)

display.c

#include <stdio.h>

int display_options(void);
int display_price(void);
int display_options()
{
printf("Welcome to the pizza parlor\n");
printf("What size pizza would you like? (in inches)");

return 0;
}

int display_price()
{
printf("Your pizza will cost 0.00\n");

return 0;
}

现在包含直接display.c

在主文件中而不是display.h

答案 4 :(得分:0)

在Code :: Blocks中,您需要确保项目中有display.c(如果您尚未创建项目,请立即执行此操作),并且它还包含在一个或多个中构建目标。默认情况下会创建debugrelease构建目标,但除非您这样说,否则不会向目标添加任何内容。在创建新文件或将现有文件添加到项目时,IDE应询问您将文件添加到哪些目标。选择所有这些并点击OK。

如果您的文件已在项目中但未包含在任何目标中,请转到项目|属性|制定目标并确保构建目标文件面板显示main.cdisplay.c旁边的复选标记。