C语言local function definitions are illegal

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言local function definitions are illegal相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <string.h>

void main()

void sort(int[],char name[][8]);
void search(int,int[],char name[][8]);
int num[10],number,N=1,c,i;
char name[10][8];
for(i=0;i<10;i++)

printf("input NO.:");
scanf("%d",&num[i]);
printf("input name:");
scanf(name[i]);

sort(num,name);
while(N==1)

printf("input number to look for:");
scanf("%d",&number);
search(number,num,name);
printf("continue or not(Y/N)?");
getchar();
c=getchar();
if(c=='N'||c=='n')
N=0;


void sort(int num[],char name[10][8])

int i,j,min,temp1;
char temp2[8];
for(i=0;i<9;i++)
min=i;
for(j=i;j<10;j++)
if(num[min]>num[j]) min=j;
temp1=num[i];
strcpy(temp2,name[i]);
num[i]=num[min];
strcpy(name[i],name[min]);
num[min]=temp1;
strcpy(name[min],temp2);

printf("result:\n");
for(i=0;i<10;i++)
printf("\n %d%10s",num[i],name[i]);


void search(int n,int num[],char name[10][8])

int top,bott,mid,loca,sign;
top=0;
bott=9;
loca=0;
sign=1;
if((n<num[0])||(N>num[9]))
loca=-1;
while((sign==1) && (top<=bott))
mid=(bott+top)/2
if(n==num[mid])
loca=mid;
printf("No. %d,his name is %s.\n",n,name[loca]);
sign=-1;

else if(n<num[mid])
bott=mid-1;
else
top=mid+1;

if(sign==1||loca==-1)
printf("can not find%d.\n",n);




运行的时候有错误,F:\15\15.cpp(31) : error C2601: 'sort' : local function definitions are illegal
F:\15\15.cpp(51) : error C2601: 'search' : local function definitions are illegal
执行 cl.exe 时出错.
请问是为什么啊,。

函数定义出错。\x0d\x0alocal function definitions are illegal解决办法 :\x0d\x0a这个没有别的原因就是少了一个右大括号“”,报错的个数和这个函数的位置有关,好像也和作用域有关,或者和它的使用频度有关,反正报错的个数不太一样,是主应用程序的一个函数少了一个“”。解决的方法就是:如果函数的数量少就一个一个的用Ctrl+来查,如果太多的话就的将最近改动过的来试,好像也没有什么好的方法。(一般报错的位置不是真正的出错位置,一般是报错位置的上一个函数)\x0d\x0aSyntax error:missing ';'before'' missing function header(old-style formal list?)这样的错误提示肯定是少了一个左大括号“”,这种情况下报错的数目不会太多,一般也就是四个Syntax error:missing ';'before'' ,一个missing function header(old-style formal list?),这时候注意你查你这个函数的左大括号就可以了,当时这时的报错的行一般都不是真正出问题的地方,而是在这个的上面的某个函数少了一个左大括号。\x0d\x0a这是整个函数的大括号的问题,如果是函数内部少大括号的问题的话就不会报这么多错了,也比较好改。 参考技术A 函数定义不能嵌套,请把定义移至main的外面。而且在main中进行函数的声明也不是什么好习惯。
#include <stdio.h>
#include <string.h>
void sort(int[],char name[][8]);
void search(int,int[],char name[][8]);
int N = 1;

void main()


int num[10],number,c,i;
char name[10][8];
for(i=0;i<10;i++)

printf("input NO.:");
scanf("%d",&num[i]);
printf("input name:");
scanf(name[i]);

sort(num,name);
while(N==1)

printf("input number to look for:");
scanf("%d",&number);
search(number,num,name);
printf("continue or not(Y/N)?");
getchar();
c=getchar();
if(c=='N'||c=='n')
N=0;





void sort(int num[],char name[10][8])

int i,j,min,temp1;
char temp2[8];
for(i=0;i<9;i++)
min=i;
for(j=i;j<10;j++)
if(num[min]>num[j]) min=j;
temp1=num[i];
strcpy(temp2,name[i]);
num[i]=num[min];
strcpy(name[i],name[min]);
num[min]=temp1;
strcpy(name[min],temp2);

printf("result:\n");
for(i=0;i<10;i++)
printf("\n %d%10s",num[i],name[i]);


void search(int n,int num[],char name[10][8])

int top,bott,mid,loca,sign;
top=0;
bott=9;
loca=0;
sign=1;
if((n<num[0])||(N>num[9]))
loca=-1;
while((sign==1) && (top<=bott))
mid=(bott+top)/2;
if(n==num[mid])
loca=mid;
printf("No. %d,his name is %s.\n",n,name[loca]);
sign=-1;

else if(n<num[mid])
bott=mid-1;
else
top=mid+1;

if(sign==1||loca==-1)
printf("can not find%d.\n",n);
本回答被提问者和网友采纳
参考技术B c语言不允许函数的嵌套定义。
比如:
void funca(void)

...
void funcb(void)





仔细检查下,有没有这种形式的函数定义

C lang:Definition function

Ax_note.

  • in parameter for show_n_char() is formal parameter
#include <stdio.h>
#include <string.h>
#define NAME "ENOMOTHEM, INC."
#define ADDRESS "101 Beijing China"
#define PLACE "Megapolis, CA 00000"
#define WIDTH 40
#define WJXNUM 40
#define SPACE ' '

// function protype
void show_n_char(char ch, int num);

int main(void)
{
    int spaces;
// function call
    show_n_char('A',WJXNUM);
    printf("
");
    putchar('
');
    show_n_char('*', WIDTH);
    putchar('
');
    show_n_char(SPACE, 12);
    printf("%s
", NAME);
    spaces = (WIDTH - strlen(ADDRESS)) / 2;

    show_n_char(SPACE, spaces);
    printf("%s
", ADDRESS);
    show_n_char(SPACE, (WIDTH - strlen(PLACE)) / 2);

    printf("%s
", PLACE);
    show_n_char('*', WIDTH);
    putchar('
');

    return 0;
}
//function definition
void show_n_char (char ch, int num)
{
    int count;

    for (count = 1; count <= num; count++)
        putchar(ch);
}

技术图片

以上是关于C语言local function definitions are illegal的主要内容,如果未能解决你的问题,请参考以下文章

c语言的文法产生式

显示这个错误error C2601: 'maxmin' : local function definitions are illegal是怎么回事?

C lang:Definition function

我的C/C++语言学习进阶之旅使用stb_image库时候报错 multiple definition of ‘stbi_xxxxx‘ 和 previous definition here

我的C/C++语言学习进阶之旅使用stb_image库时候报错 multiple definition of ‘stbi_xxxxx‘ 和 previous definition here

hausaufgabe--python 17- Function definition