我在数字常量之前收到此代码中的错误,预期为";",""或")"|

  • 本文关键字:错误 常量 数字 代码 c
  • 更新时间 :
  • 英文 :


我想知道为什么我得到这个错误?D:C ProgrammingC training projectsbubblePointermain.c|6|error:预期在数字常量之前有';',','或')'。我需要知道为什么。然而,代码在"C如何编程";传递数组的大小也

#include <stdio.h>
#include <stdlib.h>
#define size 10
//prototype
void bubble(unsigned int a[],const size_t size);
void swap(unsigned int *ptr1,unsigned int *ptr2);
int main()
{
unsigned int response[size] =
{6, 7, 8, 9, 8, 7, 8, 9, 8, 9};
bubble(response,size);
return 0;
}
void bubble(unsigned int a[],const size_t  size)
{
int pass;
for(pass=0;pass<size-1;pass++)
{
int j;
for(j=0;j<size-1;j++)
{
// swap adjacent elements if they’re out of order
if(a[j]>a[j+1])
{
swap(&a[j],&a[j+1]);
}
}
}
// output sorted array
size_t i;
for ( i = 0; i < size; ++i)
{
printf("%4d", a[i]);
}
}
void swap(unsigned int *ptr1,unsigned int *ptr2)
{
unsigned int hold;
hold=*ptr1;
*ptr1=*ptr2;
*ptr2=hold;
}

您的#define size 10指示预处理器用10替换令牌size所有实例。因此,函数的声明(和定义):

void bubble(unsigned int a[],const size_t size);

将被转换为:

void bubble(unsigned int a[],const size_t 10);

实际的编译过程开始工作之前。

你能看出第二个定义有什么问题吗?当然,不能使用10作为参数名。

你需要做的是:或者重命名该参数(例如,size_arg)(取决于你首先定义size宏的原因)从函数中删除该参数,只在函数代码中使用该预定义。

最新更新