C语言关于函数声明的问题,为啥声明后还是报错说函数未定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言关于函数声明的问题,为啥声明后还是报错说函数未定义相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void sushu(int n);

int main(void)

unsigned long num;
unsigned long div,a,b;
printf("Please enter an integer for analysis,number bigger 2");
printf("Enter q to quit.\n");

while( (scanf("%lu",&num))==1)

if((num==1)||(num==2))
printf("1 he 2 dou shi su shu \n");
else

for(a=2;a<=num;a++)

sushu(a);





void sushu(int n)

int a,b=0;
for(a=2;a<n;a++)

if(n%a==0)

b++;
break;


if(b==0)
printf(" %d ",n);

做书里的一个练习题,我在前面声明了函数sushu为什么会报错呢,报错信息是/tmp/ccqJzeC7.o: In function `main':
/home/hy/c/xt7/9.c:20: undefined reference to `sushu'
请高人指点一下,我将函数提前main之前就可以正常编译运行,为什么声明后还是不行呢

你把大括号的位置放错了,sushu函数被定义在了main函数里面,但是按照C语言的规定,函数不允许嵌套定义,所以你的sushu相当于没有定义(不知为何你的编译器没有报错说不允许在函数内定义函数)。解决方法是把你最后面多出来的大括号移到main函数最后面。 参考技术A 把函数定义在main的外面 在前面声明。

以上是关于C语言关于函数声明的问题,为啥声明后还是报错说函数未定义的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft visual studio C++中,#include <vector> 语句,但是报错说vector未声明的变量?请问为啥?

C语言为啥可以重写标准库函数?

关于在C语言 声明带有一个变长数组参数的函数

C++ 内联函数:这样声明,这样定义,还是两者兼而有之?为啥?

C++:为啥必须声明私有函数?

c语言函数的调用和声明