📅  最后修改于: 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语言程序。