程序来源:《C程序设计(第四版)》谭浩强 例7.20
Code::Blocks 12.11,win7
源代码:
file1.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
extern void enter_string(char str[]);
extern void delete_string(char str[],char ch);
extern void print_string(char str[]);
char c,str[80];
enter_string(str);
scanf("%c",&c);
delete_string(str,c);
print_string(str);
return 0;
}
file2.c
void enter_string(char str[80])
{
gets(str);
}
file3.c
void delete_string(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
file4.c
void print_string(char str[])
{
printf(%s\n",str);
}
出错:
obj\Debug\file1.o||In function `main':|
D:\C_ChengXuSheJi\CB20131006\L7.20\file1.c|11|undefined reference to `enter_string'|
D:\C_ChengXuSheJi\CB20131006\L7.20\file1.c|13|undefined reference to `delete_string'|
D:\C_ChengXuSheJi\CB20131006\L7.20\file1.c|14|undefined reference to `print_string'|
||=== Build finished: 3 errors, 0 warnings (0 minutes, 0 seconds) ===|
把函数定义为外部函数时,不是应该在主调函数中进行声明吗?
追答主调函数前面声明,也是上面,不能在主函数中声明。
追问请你先试试再来回答问题。
放在一起是很方便,但是这个例题是为extern设计的,所以想知道错在哪里
我在file2、3、4.c中分别定义了这三个函数的啊
用#include 吗?试过,不行。
我另一文件用相似的方法处理是正常的。
我没说要include file2.c,而是指编译指令可能不对。
如果在Linux下,你可以试试gcc -o example file1.c file2.c file3.c