【问题标题】:error: C++ requires a type specifier for all declarations?错误:C++ 需要所有声明的类型说明符?
【发布时间】:2026-01-06 01:45:02
【问题描述】:
#include <cstdio>
#include <iostream>
#include <fstream>
#define INPUT_FILE

#ifdef INPUT_FILE
    freopen("test.txt", "r", stdin);
#endif

using namespace std;

int main(int argc, char const *argv[])
{
    int n;
    while(scanf("%d", &n))
        printf("%d\n", n);
    return 0;
}

我正在尝试通过输入文件将输入传递给程序,但是弹出以下错误,

error: C++ requires a type specifier for all declarations
freopen("test.txt", "r", stdin);
    ^~~~~~~
1 error generated.

【问题讨论】:

    标签: c++ stdin


    【解决方案1】:

    您不能在函数或程序的任何其他可执行部分之外使用函数。

    你的程序相当于

    #include <cstdio>
    #include <iostream>
    #include <fstream>
    #define INPUT_FILE
    
    
    freopen("test.txt", "r", stdin); // Makes no sense
    
    using namespace std;
    
    int main(int argc, char const *argv[])
    {
        int n;
        while(scanf("%d", &n))
            printf("%d\n", n);
        return 0;
    }
    

    【讨论】:

    • 我明白了,不要忘记预处理器指令只是“文本替换”,所以你需要小心你把它们放在哪里