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

简介: 在移植c++代码到c的时候,经常会出现一个奇怪的错误,error C2275: “XXX”: 将此类型用作表达式非法 表达式非法,这个错误是由于c的编译器要求将变量的申明放在一个函数块的头部,而c++没有这样的要求造成的。

在移植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:\n"); scanf("%s",&fname); printf("Please enter your last name:\n"); scanf("%s",&lname); n = strlen(fname); m = strlen(lname);
printf("%s %s\n",fname,lname); printf("%*d %*d\n",n,n,m,m); printf("%s %s\n",fname,lname); printf("%-*d %-*d",n,n,m,m);
getch(); return 0; } 当我把int n,m;放在scanf()后一句,程序就要报错,而把int n,m;放在开头就没有错。这是什么原因?不是说只要在首次使用变量前声明变量就可以了吗?
 
 
这个跟编译器的原理有关系。大部分的c语言编译器要求变量的声明在程序最前面。所以当你将声明移到scanf下面时,会出现这种错误。而c++则不会。
相关文章
|
C++
error C2220: 警告被视为错误 - 没有生成“object”文件
原文:error C2220: 警告被视为错误 - 没有生成“object”文件 这种错误的原因是:原因是该文件的代码页为英文,而我们系统中的代码页为中文。
5405 0
TS,类型注解 number就是类型注解,TS类型注解是一种为变量添加类型约束的方式,你定义什么类型,就只能赋值什么类型,变量命名规则,变量名称不能以数字开头,交换变量写法
TS,类型注解 number就是类型注解,TS类型注解是一种为变量添加类型约束的方式,你定义什么类型,就只能赋值什么类型,变量命名规则,变量名称不能以数字开头,交换变量写法
pywintypes.com_error: (-2147221005, ‘无效的类字符串‘, None, None)
pywintypes.com_error: (-2147221005, ‘无效的类字符串‘, None, None)
1473 0
pywintypes.com_error: (-2147221005, ‘无效的类字符串‘, None, None)
成功解决pywintypes.com_error: (-2147221005, '无效的类字符串', None, None)
成功解决pywintypes.com_error: (-2147221005, '无效的类字符串', None, None)
成功解决pywintypes.com_error: (-2147221005, '无效的类字符串', None, None)
|
JavaScript 前端开发 API
TS 对象可能为“未定义”,不能将类型“ XXXX | undefined “分配给类型{ xxxx }
TS 对象可能为“未定义”,不能将类型“ XXXX | undefined “分配给类型{ xxxx }
TS 对象可能为“未定义”,不能将类型“ XXXX | undefined “分配给类型{ xxxx }
定义函数,并用指针交换两个变量内容(正确版和错误版+错误原因)
定义函数,并用指针交换两个变量内容(正确版和错误版+错误原因)
97 0
定义函数,并用指针交换两个变量内容(正确版和错误版+错误原因)
判断Object中数据类型(已知类型、未知类型))
判断Object中数据类型(已知类型、未知类型))
145 0
${变量:=默认值}是什么意思?
当待测的变量不存在或者为空时,将直接把待测变量设置为默认值(赋值),如果待测变量存在,则直接传变量值。
194 0
解决vs2019无法解析的外部符号问题,未找到xxx的函数定义
解决vs2019无法解析的外部符号问题,未找到xxx的函数定义
解决vs2019无法解析的外部符号问题,未找到xxx的函数定义
|
SQL 存储 数据库
未经处理的异常在 System.Data.dll 中发生。其他信息:在应使用条件的上下文(在 ‘***‘ 附近)中指定了非布尔类型的表达式。
机房收费系统中,有些人在联合查询这个模块用的是存储过程,我先尝试着在数据库中建立了一个视图,然后在UI层做个判断并生成查询条件strCondition。
未经处理的异常在 System.Data.dll 中发生。其他信息:在应使用条件的上下文(在 ‘***‘ 附近)中指定了非布尔类型的表达式。