error C2275: “XXX”: 将此类型用作表达式非法

在移植c++代码到c的时候,经常会出现一个奇怪的错误,
error C2275: “XXX”: 将此类型用作表达式非法

表达式非法,这个错误是由于c的编译器要求将变量的申明放在一个函数块的头部,而c++没有这样的要求造成的。


解决的办法就是把变量的申明全部放在变量的生存块的开始。

初学C语言,这是我写的一个程序: #include <stdio.h> #include <string.h> int main(void) { 	char fname[20],lname[20]; 	int n,m;
printf("Please enter your first name: "); scanf("%s",&fname); printf("Please enter your last name: "); scanf("%s",&lname); n = strlen(fname); m = strlen(lname);
printf("%s %s ",fname,lname); printf("%*d %*d ",n,n,m,m); printf("%s %s ",fname,lname); printf("%-*d %-*d",n,n,m,m);
getch(); return 0; } 当我把int n,m;放在scanf()后一句,程序就要报错,而把int n,m;放在开头就没有错。这是什么原因?不是说只要在首次使用变量前声明变量就可以了吗?
 
 
这个跟编译器的原理有关系。大部分的c语言编译器要求变量的声明在程序最前面。所以当你将声明移到scanf下面时,会出现这种错误。而c++则不会。
原文地址:https://www.cnblogs.com/cappuccino/p/4616761.html