出现该错误的原因为编译时只变编译了源文件的一部分,故在链接时无法从编译好的目标代码中找到print函数,所以出错.
根据你的源文件结构,个人推荐先单独编译源文件为多个object文件,再统一链接.
方法如下
gcc?-c?main.c?#?-c参数的作用是让gcc只编译,不链接
gcc?-c?test.c
gcc?-o?main?main.o?test.o?#?将编译好的目标代码链接
当然,好了,全部的在gcc为编译器的前提下执行,如使用clang等其他编译器,方法类似(clang的调用方法与gcc高度兼容)
声明和定义不是一回事!声明只是签名,定义才为函数提供真正的代码.
C语言没有bool类型,需要自己来定义,同时IsPrime函数的变量i重复定义了修改如下.
#?include?stdio.h???//这是代码
typedef?enum?//定义bool类型
{
true?=?0,
false?=?1,
}bool;
bool?IsPrime(int?m)??//第三行
{?
int?i;
if(m%i?==?0)
break;
}
if(i?==?m)
return?true;
else
return?false;
你把大括号的位置放错了,sushu函数被定义在了main函数里面,但是按照C语言的规定,函数不允许嵌套定义,所以你的sushu相当于没有定义(不知为何你的编译器没有报错说不允许在函数内定义函数).解决方法是把你最后面多出来的大括号移到main函数最后面.
以上就是土嘎嘎小编大虾米为大家整理的相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!