我是c编程语言的新手。我在centos linux系统下的同一目录下有以下文件。
game.c
game.h
的main.c
game.h
#ifndef GAME_
#define GAME_
extern void game (void);
#endif
game.c
#include "game.h"
void game (void)
{
return 23;
}
的main.c
#include "game.h"
int main (void)
{
game();
}
使用以下命令进行编译时..
gcc main.c
我收到如下错误消息..
/tmp/ccwIlBKt.o:在函数
main': main.c:(.text+0x7): undefined reference to
游戏'collect2:ld返回1退出状态
链接我的头文件的正确方法是什么?
答案 0 :(得分:6)
您需要编译并链接这两个程序。
首先编译并创建像这样的对象文件
gcc -c game.c
gcc -c main.c
然后你可以像这样生成可执行文件
gcc game.o main.o -o myexe
您可以像这样使用
包含库文件gcc game.o main.o -o myexe -lsocket -wall
这里lsocket是套接字库,并且在链接代码时使用-wall显示是否有任何警告
答案 1 :(得分:0)
gcc game.c main.c
或
gcc *.c
您需要编译实现函数game.c
的{{1}},即您的主函数(在game()
内)所指的。
此外,您不应该从void函数返回值。只需将主体留空,或者如果您确实需要返回语句,只需键入main.c
即可。即。
return;
否则,如果要返回值,请将函数的声明更改为:
void game(void)
{
return;
}
答案 2 :(得分:0)
您应该将代码更改为:
<强> game.c 强>
#include "game.h"
int game (void)
{
return 23;
}
<强>的main.c 强>
#include "game.h"
int main (void)
{
game();
return 0;
}
你的game.c需要有正确的返回类型(int而不是void),并且你的main方法在完成时应该总是返回0,以告知程序正确结束。
在学习C时我也强烈推荐这本书(也适合有经验的程序员参考):
C编程语言,第2版,作者:Brian W. Kernighan ISBN-13:978-0131103627