【问题标题】:error C2447: '{' : missing function header -- Can't resolve this error, what's wrong?error C2447: '{' : missing function header -- 无法解决这个错误,怎么了?
【发布时间】:2015-05-15 08:24:25
【问题描述】:
#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 错误。

【问题讨论】:

  • 那个块在main之外。
  • BTW:头文件conio.h不可移植(一般在windows OS之外不存在)建议删除相关#include并使用标准系统函数。

标签: c function validation input header


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    现在你只有一段代码,在任何函数之外。

    我从您的其余代码中假设,此代码块应该是 void validate_number(); 的定义,如下所示:

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

    请注意void 函数不能返回值,因此您的return 0 应该被删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2020-12-08
      相关资源
      最近更新 更多