如何解决在数字常数之前应为';',','或''...我的C程序中出现此错误
这是我编写的C程序 根据先前的答案,我将变量名称从SIZE更改为arrSize,但是在编译代码时仍然显示错误
行:4列:17 [错误]预期数字常量前为';',','或')'
#include<stdio.h>
#include<stdlib.h>
#define arrSize 8 //I'm getting error in this line
void merge(int a[],int temp[],int left,int mid,int right);
void display(int [],int);
void msort(int [],int [],int,int);
void merge_sort(int [],const int);
int main() {
int a[arrSize] = {-1,2,9,1,7,5,0};
int temp[arrSize];
printf("Array before sorting:\n");
display(a,arrSize);
merge_sort(a,arrSize);
printf("Array after sorting:\n");
display(a,arrSize);
return 0;
}
void merge_sort(int a[],const int arrSize) {
msort(a,temp,arrSize-1);
}
void display(int a[],const int arrSize) {
int i;
for(i = 0; i < arrSize; i++) {
printf("%d",a[i]);
printf("\n");
}
}
解决方法
问题是,您尝试创建一个名为arrSize
的MACRO,然后再次尝试在同一名称空间中使用相同名称的变量。
基于宏名称的预处理器替换使用相同名称(标识符)的变量在函数merge_sort()
中创建了无效的语法。
要么更改宏名称,要么更改函数中使用的变量名称。
此外,还要仔细检查函数原型和定义-不匹配。
,- 您不能用相同的名称命名宏和变量。
#define arrSize
...const int arrSize
。 - merge_sort声明和定义不匹配。
因此void merge_sort(int a[],int temp[],const int arrSize)
行是所有问题的根源。
您使用的参数名称与常量名称一致
#define arrSize 8
例如
void merge_sort(int a[],const int arrSize) {
^^^^^^^
在预处理阶段之后,编译器将这种声明视为
void merge_sort(int a[],const int 8) {
^^^
因此,请更改参数名称或更改常量的名称。
为由所有大写字母构建的清单常量分配名称是一个好主意。例如
#define ARR_SIZE 8
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。