📜  编写一个不能在 C++ 中编译的 C 程序(1)

📅  最后修改于: 2023-12-03 15:27:37.567000             🧑  作者: Mango

编写一个不能在 C++ 中编译的 C 程序

在C++中,变量的声明必须在函数体之前,而在C语言中则不一定需要。因此我们可以通过这个特性编写一个在C语言中能编译通过,但在C++中会报错的程序。

#include <stdio.h>

void fun() {
    int fun = 0;
    printf("Hello, fun!\n");
}

int main() {
    fun();
    return 0;
}

在这个程序中,我们定义了一个函数fun,同时在函数内部又定义了一个与函数同名的变量fun。在C语言中,这是合法的,因为函数作用域和变量作用域是不同的。但在C++中,因为变量的声明必须在函数体之前,所以会报错。

如果我们在C++中编译这个程序,会得到以下错误信息:

error: 'fun' was not declared in this scope
     fun();
     ^~~

因此,我们成功地编写了一个不能在C++中编译的C语言程序。