syntax error : missing ';' before 'type'

#include <stdio.h>

#include <stdlib.h>

int main (int argc, char **argv)

{

char a[] = {‘a‘,‘b‘,‘c‘,‘d‘,‘e‘};

char b[] = "abcde";

char c[][3] = {{ ‘a‘ , ‘b‘ , ‘c‘ },{ ‘d‘ , ‘e‘ , ‘f‘ },{ ‘g‘ ,‘h‘ , ‘j‘ },{ ‘k‘ , ‘h‘ , ‘l‘ }};

char *p = 0;

char d[][5] = {"abcd","efgh","ijkl","mnol"};

/*

printf("size of a[] is:%d\n",sizeof(a));

printf("size of b[] is:%d\n",sizeof(b));      //这样可以通过。

*/

printf("size of char is:%d\n",sizeof(char));

printf("size of short is:%d\n",sizeof(short));

printf("size of int is:%d\n",sizeof(int));

printf("size of short int is:%d\n",sizeof(short int));

printf("size of lont int is:%d\n",sizeof(long int));

printf("size of float is:%d\n",sizeof(float));

printf("size of double is:%d\n",sizeof(double));

/*编译报错,具体原因不清楚。但变量放在函数前面就没错了。

得自网上:

经过测试发现

在VC中编译c程序,在一个大括号括起的范围内,如果变量声明放在了函数调用的后面,那么编译的时候就会报错:

syntax error : missing ‘;‘ before ‘type‘

然后你可以修改为把变量声明放在函数调用之前。就会顺利通过编译。

这个问题在vc编译c++程序,或者gcc编译c程序的时候都不会出现,仅仅在vc编译c程序的时候才会出现.

D:\winshare\CBasis\practice\practice3.c(29) : error C2143: syntax error : missing ‘;‘ before ‘type‘

D:\winshare\CBasis\practice\practice3.c(30) : error C2143: syntax error : missing ‘;‘ before ‘type‘

D:\winshare\CBasis\practice\practice3.c(31) : error C2143: syntax error : missing ‘;‘ before ‘type‘

D:\winshare\CBasis\practice\practice3.c(33) : error C2065: ‘c‘ : undeclared identifier

D:\winshare\CBasis\practice\practice3.c(34) : error C2109: subscript requires array or pointer type

D:\winshare\CBasis\practice\practice3.c(35) : error C2109: subscript requires array or pointer type

D:\winshare\CBasis\practice\practice3.c(35) : error C2109: subscript requires array or pointer type

D:\winshare\CBasis\practice\practice3.c(37) : error C2065: ‘p‘ : undeclared identifier

D:\winshare\CBasis\practice\practice3.c(39) : error C2065: ‘d‘ : undeclared identifier

D:\winshare\CBasis\practice\practice3.c(39) : error C2109: subscript requires array or pointer type

D:\winshare\CBasis\practice\practice3.c(40) : error C2109: subscript requires array or pointer type

D:\winshare\CBasis\practice\practice3.c(40) : error C2109: subscript requires array or pointer type

*/

/*将下面这段代码放在这个位置还是出现一样的编译报错。

D:\winshare\CBasis\practice\practice3.c(43) : error C2143: syntax error : missing ‘;‘ before ‘type‘

D:\winshare\CBasis\practice\practice3.c(44) : error C2143: syntax error : missing ‘;‘ before ‘type‘

D:\winshare\CBasis\practice\practice3.c(45) : error C2065: ‘a‘ : undeclared identifier

D:\winshare\CBasis\practice\practice3.c(46) : error C2065: ‘b‘ : undeclared identifier

*/

/*

char a[] = {‘a‘,‘b‘,‘c‘,‘d‘,‘e‘};

char b[] = "abcde";

printf("size of a[] is:%d\n",sizeof(a));

printf("size of b[] is:%d\n",sizeof(b));

*/

//下面这段同上面的测试一样,同样报错。

/* char c[][3] = {{ ‘a‘ , ‘b‘ , ‘c‘ },{ ‘d‘ , ‘e‘ , ‘f‘ },{ ‘g‘ ,‘h‘ , ‘j‘ },{ ‘k‘ , ‘h‘ , ‘l‘ }};

char *p = 0;

char d[][5] = {"abcd","efgh","ijkl","mnol"};

*/

printf("size of a[] is:%d\n",sizeof(a));

printf("size of b[] is:%d\n",sizeof(b));

printf("size of c[][] is:%d\n",sizeof(c));

printf("size of c[0] is:%d\n",sizeof(c[0]));

printf("size of c[0][0] is %d\n",sizeof(c[0][0]));

printf("size of char *p is %d\n",sizeof(p));

printf("size of d[] is %d\n",sizeof(d[0]));

printf("size of d[0][0] is %d\n",sizeof(d[0][0]));

system("pause");

return 0;

}

总结(得自网上):具体的我也测试过了。在Linux上用gcc编译可以通过。

经过测试发现

在VC中编译c程序,在一个大括号括起的范围内,如果变量声明放在了函数调用的后面,那么编译的时候就会报错:

syntax error : missing ‘;‘ before ‘type‘

然后你可以修改为把变量声明放在函数调用之前。就会顺利通过编译。

这个问题在vc编译c++程序,或者gcc编译c程序的时候都不会出现,仅仅在vc编译c程序的时候才会出现.

syntax error : missing ';' before 'type'

时间: 2024-11-10 11:23:43

syntax error : missing ';' before 'type'的相关文章

一个关于调用函数函参写void的错误error C2143 syntax error missing &#39;)&#39; before &#39;type&#39;

error C2143 syntax error missing ')' before 'type' 错误代码: srand((unsigned)clock(void)); 错误原因: 画蛇添足的写了void 修改: 把void去掉即可 总结: void代表空,就是实实在在的什么都没有,除非是在声明,否则平常用的时候就是空. 一个关于调用函数函参写void的错误error C2143 syntax error missing ')' before 'type'

error C2143: syntax error : missing &#39;;&#39; before &#39;type&#39;

许久之前,就想看看C和C++,看看这两种神奇的编程语言,但是一直被这样或者那样的琐事给耽搁了(狂喷自己的拖延症). 今天翻开自己的移动硬盘找到一本古老的书籍:<The C Programming Language 中文版>,浏览一下,缓解一下内心的空虚. 事情并没有想象中的那么顺利,刚看了一个例子的两种方法,但是当把他们组合起来时,就遇到了困难: 错误提示: error C2143: syntax error : missing ';' before 'type' error C2065: '

vs2012编译C代码,总是出现error C2143: syntax error : missing &#39;;&#39; before &#39;type&#39;

今天编译一个动态库,里面有用C编写的源文件, 为了调试自己加了一些简单的信息输出语句,但是总是编译不过, 最后精简到只是定义一个函数的局部变量也会编译失败, 最后Google了才明白,vs在编译C代码的时候会有一些特殊的check, 其中一种就是需要函数定义局部变量要在开头. 举例如下: 错误的代码 void func1() { int x: //do some work int y; //do other work } 这样的代码在编译的时候就会在int y 这里报error C2143: s

error C2143: syntax error : missing &#39;;&#39; before &#39;{&#39;

这是我在实现哈夫曼树的时候,遇到的错误,具体为什么我也不清楚!!!因为这是我用学校实验室的电脑编译出现的错误(用的软件是VC6.0,贼老的版本!!!),我自己的是Code Blocks(没有出错)??? 代码如下: for ( i = 1; i <= n; i++ ) { huffNode HT[i](w[i],0,0,0);//初始化前n个节点(构造哈夫曼树的原始节点) } 然后,就有错了(-_-!) error C2057: expected constant expression erro

Cocos2dx 3.6源代码编译错误:syntax error : missing &amp;#39;)&amp;#39; before &amp;#39;{&amp;#39;

在编译Cocos2dx 3.6版本号时.发现编译错误: 定位代码行: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F{0.0,1.0,1.0,1.0}); 改动例如以下: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F<span style="color:#ff0000;">(</span>0.0,1.0,1.0,1

Cocos2dx 3.6源码编译错误:syntax error : missing &#39;)&#39; before &#39;{&#39;

在编译Cocos2dx 3.6版本时,发现编译错误: 定位代码行: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F{0.0,1.0,1.0,1.0}); 修改如下: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F<span style="color:#ff0000;">(</span>0.0,1.0,1.0,1.0&

突然出现错误gdiplustypes.h(280): error C2059: syntax error : &#39;constant&#39;等未知错误

gdiplustypes.h(280): error C2059: syntax error : 'constant'gdiplustypes.h(280): error C2238: unexpected token(s) preceding ';'gdiplustypes.h(281): error C2059: syntax error : 'constant'gdiplustypes.h(281): error C2238: unexpected token(s) preceding '

Command line option syntax error.type Command /? for help

电脑装思维导图的时候,报错显示"Command line option syntax error.Type Command /? for help."就查了一下,原来是系统没有C++2005,需要安装,就上网下载了一个vcredist_x86.exe,但是双击安装,仍然出现这个错误. 没办法,接着上网查吧,是什么原因呢?网上说是因为该文件安装不支持中文安装路径,然后我就把文件夹改成了英文名称的,但是双击还是出现这个错误.可能有的人用这种方法成功了吧~本着没有解决不了的问题的思想,接着奋

Type Syntax error, insert &quot;)&quot; to complete Expression

今天倒持了 几个小时! 愣是 没有明白 ,为什么我的JSP的第一行没有代码?  还是报错! 错误是: Description Resource Path Location Type Syntax error, insert ")" to complete Expression left.jsp /qyrs/WebRoot/admin/iframe line 1 Client-side JavaScript Problem 翻译: 描述资源路径位置类型语法错误,插入")&quo