error C2143: 语法错误 : 缺少“;”(在“类型”的前面)

ciodragon 2009-12-09 07:23:00
我用vs2008编程的时候(大一,函数那一章),遇到好几次 error C2143: 语法错误 : 缺少“;”(在“类型”的前面),可是我检查了之后,并没有缺少“;”呀,到底应该怎么更正呢,求哪位高手指点一下
...全文
41376 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
lt882002 2012-08-06
  • 打赏
  • 举报
回复
我在编译OGRE代码的时候,遇到这个问题。代码完全是从另一个运行通过的工程里拷过来的。就是出了这个问题。

原因很简单。就是在拷贝头文件过来时,由于函数内容是在头文件中所写。头文件大括号{}结束,一定要有分号";"。我拷贝的时候,把这个小符号,忘掉了。害得我找了大半天原因。
小黄老菜鸟 2011-07-26
  • 打赏
  • 举报
回复
int number;
stud *head;
number=N;
head=creat(number);
if(print(head)==SLIST_RETURN_OK)
{
printf("print success...\n");
}
else
{
printf("print. fail \n");
}
aband2004 2010-06-05
  • 打赏
  • 举报
回复
你这是C和C++语法混用 C不管什么时候声明变量都要放到函数的最开头,不像c++可以中间临时用
ciodragon 2009-12-11
  • 打赏
  • 举报
回复
35楼的代码,仍然有错误,不过谢谢你的认真帮忙
ciodragon 2009-12-11
  • 打赏
  • 举报
回复
error C2143: 语法错误 : 缺少“;”(在“类型”的前面)还是有错误呀,这vs为2008到底是什么回事呀,明明就没有错,他到底在干什么,强烈鄙视微软
yuezy3 2009-12-11
  • 打赏
  • 举报
回复
对不起,中间那复制时多了一点
yuezy3 2009-12-11
  • 打赏
  • 举报
回复
这样改:(请看中间我加的注释,按那个改就没问题)
#include <stdio.h>
main()
{
int a[3][3];
int change(int a[3][3]);
int i,j;
printf("input the array:\n");
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
scanf_s("%d",&a[i][j]);
printf("%d",a[i][j]);
}
int change(int a[3][3]);]);//这是函数调用。改为chang(a);另 将下面的change 函数的定义改为:
// int chang(int **b){//里面将所有a改成b。其他不变}
printf("the changed array is:\n"); //这里出错是因为上一句chang(int a[][])中int a[][]写法错误,编译器将其看做申明。

printf("the changed array is:\n"); //这里出错是因为上一句chang(int a[][])中int a[][]写法错误,编译器将其看做申明。
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
printf("%d",a[i][j]);
printf("\n");
}
}
change(int a[3][3])

{
int i,j;
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
a[i][j]=a[j][i];
}
}
smallbear_2008 2009-12-11
  • 打赏
  • 举报
回复
最开始写代码的时候,就要注意代码规范。
ciodragon 2009-12-11
  • 打赏
  • 举报
回复
告诉我解决方案
zwcs0801 2009-12-10
  • 打赏
  • 举报
回复
int change(int a[3][3]) 传法是有问题的吧
ChRedfield 2009-12-10
  • 打赏
  • 举报
回复

#include <stdio.h>

int change(int a[3][3]); // 函数定义放在Main函数外面,如果一定要放在Main函数里面 应放在
// printf("input the array:\n");前面

void main(void)
{
int a[3][3];

int i , j;

printf("input the array:\n");

for( i = 0; i < 3 ; i++ )
{ // 嵌套循环的话, 这里也加上{}
for(j=0;j <3;j++)
{
scanf("%d",&a[i][j]);
printf("%d",a[i][j]);
}
}

printf("the changed array is:\n");

for(i=0;i <3;i++)
{ // 嵌套循环的话, 这里也加上{}
for(j=0;j <3;j++)
{
printf("%d",a[i][j]);
printf("\n");
}
}
}

change(int a[3][3])
{
int i,j;
for(i=0;i <3;i++)
{ // 嵌套循环的话, 这里也加上{}
for(j=0;j <3;j++)
{
a[i][j]=a[j][i];
}
}

return 0; // 这里应该有一个返回值,看你的需要。 不知道你的意图,就写了一个0。
}
gahyyai 2009-12-10
  • 打赏
  • 举报
回复
mark
LPR_Pro 2009-12-10
  • 打赏
  • 举报
回复
有可能是声明的变量的类型没有引入
gadx86 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 z569362161 的回复:]
很多编译器显示错误,并不是本行,而是上一行的错误。
[/Quote]
只有引用的内容不允许回复
yinshisike 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ciodragon 的回复:]
题目:输入一个3x3的二维数组,用一个函数实现行列互换
我的代码如下:
#include <stdio.h>
main()
{
int a[3][3];

int i,j;
printf("input the array:\n");
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
scanf_s("%d",&a[i][j]);
printf("%d",a[i][j]);
}
int change(int a[3][3]); //一般函数都声明不写在这里,当然了写在这里也没有错.
printf("the changed array is:\n");//语法错误 : 缺少“;”(在“类型”的前面)
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
printf("%d",a[i][j]);
printf("\n");
}
}
change(int a[3][3]) ///这里没有类型,目前MS C++ 不支持默认的类型

{
int i,j;
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
a[i][j]=a[j][i];
}
}

[/Quote]

//问题不大.
ciodragon 2009-12-09
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
int a[3][3];
int change(int a[3][3]);
int i,j;
printf("input the array:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
scanf_s("%d",&a[i][j]);
printf("%d",a[i][j]);
}
int change(int a[3][3]);
printf("the changed array is:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d",a[i][j]);
printf("\n");
}
}
change(int a[3][3])

{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
a[i][j]=a[j][i];
}
}
ciodragon 2009-12-09
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
int a[3][3];
int change(int a[3][3]);
int i,j;
printf("input the array:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
scanf_s("%d",&a[i][j]);
printf("%d",a[i][j]);
}
int change(int a[3][3]);
printf("the changed array is:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d",a[i][j]);
printf("\n");
}
}
change(int a[3][3])

{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
a[i][j]=a[j][i];
}
}
freshui 2009-12-09
  • 打赏
  • 举报
回复

#include <stdio.h>

int change(int a[3][3])

{
int i,j;
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
a[i][j]=a[j][i];
}
}
main()
{
int a[3][3];

int i,j;
printf("input the array:\n");
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
scanf_s("%d",&a[i][j]);
printf("%d",a[i][j]);
}

change(a);
printf("the changed array is:\n");
for(i=0;i <3;i++)
for(j=0;j <3;j++)
{
printf("%d",a[i][j]);
printf("\n");
}
}

ciodragon 2009-12-09
  • 打赏
  • 举报
回复
怎么用那个”插入源码“呀,那个按钮是找到了,但是刚来这论坛,不太熟息
ciodragon 2009-12-09
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
int a[3][3];

int i,j;
printf("input the array:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
scanf_s("%d",&a[i][j]);
printf("%d",a[i][j]);
}
int change(int a[3][3]);
printf("the changed array is:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%d",a[i][j]);
printf("\n");
}
}
change(int a[3][3])

{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
a[i][j]=a[j][i];
}
}




加载更多回复(21)

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧