首页 > 解决方案 > 数字常量前应有“;”、“,”或“)”...我在 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, 2, 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[], int temp[], const int arrSize) {
    msort(a, temp, 0, arrSize-1);
}

void display(int a[], const int arrSize) {
    int i;
    for(i = 0; i < arrSize; i++) {
        printf("%d", a[i]);
        printf("\n");
    }
}

标签: ccompiler-errorsc-preprocessorpreprocessor-directive

解决方案


您正在使用与常量名称一致的参数名称

#define arrSize 8

例如

void merge_sort(int a[], int temp[], const int arrSize) {
                                               ^^^^^^^

在预处理阶段之后,编译器认为这个声明就像

void merge_sort(int a[], int temp[], const int 8) {
                                              ^^^

所以要么更改参数名称,要么更改常量的名称。

为由所有大写字母构建的清单常量分配名称是个好主意。例如

#define ARR_SIZE 8

推荐阅读