错误 C2447:“{”:缺少函数头 -- 无法解决此错误,出了什么问题?
error C2447: '{' : missing function header -- Can't resolve this error, what's wrong?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include "bcio2.h"
int error, x;
char totalimpulse[80], averageimpulse[80];
void validate_number();
int main(void)
{
clrscr();
do{
printf("\nTotal Impulse delivered: ");
gets(totalimpulse);
validate_number();
} while (error != 0);
printf("You entry %d was valid\n", x);
getch();
return 0;
}
{ //error C2447
clrscr();
do{
printf("\nAverage Impulse delivered: ");
gets(averageimpulse);
validate_number();
} while (error != 0);
printf("You entry %d was valid\n", x);
getch();
return 0;
}
括号匹配,似乎没有任何不必要的分号。我假设这是显示 input/validation 的正确方式。当 运行 仅使用 do…while(); 循环 totalimpulse 时它工作正常但是当我 copy/paste另一对 {} 之间完全相同,我只得到 C2447 错误。
现在你只有一段代码,在任何函数之外。
我从您的其余代码中假设,此代码块应该是 void validate_number();
的定义,如下所示:
void validate_number()
{
clrscr();
do{
// ...
return 0;
}
请注意,void
函数不能 return 值,因此您的 return 0
应该被删除。
从错误所在处开始的代码不在 main
或任何其他与此相关的函数中。如果您删除错误行上的大括号和它前面的大括号,那么您的第二个循环也会在 main
旁边。如果您希望该部分成为不同的功能,则必须为该功能包含 header。你在 validate_number
顶部的内容只是一个承诺,你 将 在某处定义该函数(尽管如果你的意思是底部的那个部分是 validate_number
,我很确定你不希望它是递归的)。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include "bcio2.h"
int error, x;
char totalimpulse[80], averageimpulse[80];
void validate_number();
int main(void)
{
clrscr();
do{
printf("\nTotal Impulse delivered: ");
gets(totalimpulse);
validate_number();
} while (error != 0);
printf("You entry %d was valid\n", x);
getch();
return 0;
}
{ //error C2447
clrscr();
do{
printf("\nAverage Impulse delivered: ");
gets(averageimpulse);
validate_number();
} while (error != 0);
printf("You entry %d was valid\n", x);
getch();
return 0;
}
括号匹配,似乎没有任何不必要的分号。我假设这是显示 input/validation 的正确方式。当 运行 仅使用 do…while(); 循环 totalimpulse 时它工作正常但是当我 copy/paste另一对 {} 之间完全相同,我只得到 C2447 错误。
现在你只有一段代码,在任何函数之外。
我从您的其余代码中假设,此代码块应该是 void validate_number();
的定义,如下所示:
void validate_number()
{
clrscr();
do{
// ...
return 0;
}
请注意,void
函数不能 return 值,因此您的 return 0
应该被删除。
从错误所在处开始的代码不在 main
或任何其他与此相关的函数中。如果您删除错误行上的大括号和它前面的大括号,那么您的第二个循环也会在 main
旁边。如果您希望该部分成为不同的功能,则必须为该功能包含 header。你在 validate_number
顶部的内容只是一个承诺,你 将 在某处定义该函数(尽管如果你的意思是底部的那个部分是 validate_number
,我很确定你不希望它是递归的)。