我在我的Geany项目中有一个奇怪的问题。该项目非常简单,包含3个文件,全部位于同一目录中:main.c
,foo.h
和foo.c
。Geany项目包括编译器错误
编译器错误:
In file included from main.c:1:0:
foo.h:4:12: warning: ‘bar’ used but never defined
static int bar(void);
^
/tmp/cc0zCvOX.o: In function `main':
main.c:(.text+0x12): undefined reference to `bar'
Compilation failed.
collect2: error: ld returned 1 exit status
到底哪里出问题了?
的main.c:
#include "foo.h"
int main(int argv, char* argc[])
{
bar();
return 0;
}
了foo.h:
#ifndef _FOO_H_
#define _FOO_H_
static int bar(void);
#endif // _FOO_H_
foo.c的:
#include "foo.h"
#include <stdio.h>
static int bar(void)
{
printf("Hello World\n");
return 1;
}
项目不包括gcc的正确调用。请更新Build-> Set Build命令和/或考虑使用makefile。您首先要编译foo.c并将其设为目标文件,而不是编译main.c.也许预编译foo.c的命令对你来说效果不错,但是你必须证明它。 – frlan