错误C2447:'{':缺少函数头 - 无法解决此错误,有什么问题?

时间:2015-03-12 23:34:36

标签: c function validation input header

#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;
}

看到匹配的括号,似乎没有任何不必要的分号。我假设这是显示输入/验证的正确方法。它只运行 do ... while(); 循环 totalimpulse 时运行正常但是当我在另一对{}之间复制/粘贴完全相同时我得到的只是那个C2447错误。

2 个答案:

答案 0 :(得分:1)

现在你只需要一个代码块,在任何函数之外。

我从代码的其余部分开始假设这段代码应该是void validate_number();的定义,如下所示:

void validate_number()
{
    clrscr();
    do{
    // ...
    return 0;
}

请注意void函数无法返回值,因此应移除return 0

答案 1 :(得分:1)

错误发生的代码不在main内,或者任何其他函数。如果删除错误行上的大括号和前面的大括号,那么第二个循环也会在main旁边。如果您希望该部分是不同的功能,则必须包含该功能的标头。你在validate_number顶部的内容只是一个承诺,你在某处定义该功能(尽管如果你的意思是底部的那个部分是validate_number,我我很确定你不希望它是递归的。