尝试使用以下代码从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>
答案 0 :(得分:3)
看起来您正在编译main.c
文件。
确保编译为:
gcc -Wall main.c display.c
并将其运行为:
./a.out
答案 1 :(得分:1)
确保#include "display.h"
也位于display.c
文件的顶部。由于您使用的是Code :: Blocks,因此一旦您执行此操作,它将自动为您编译main.c
和display.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
(如果您尚未创建项目,请立即执行此操作),并且它还包含在一个或多个中构建目标。默认情况下会创建debug
和release
构建目标,但除非您这样说,否则不会向目标添加任何内容。在创建新文件或将现有文件添加到项目时,IDE应询问您将文件添加到哪些目标。选择所有这些并点击OK。
如果您的文件已在项目中但未包含在任何目标中,请转到项目|属性|制定目标并确保构建目标文件面板显示main.c
和display.c
旁边的复选标记。