error C2143: syntax error : missing ';' before 'type' in Visual C++

VC6++实战指南:经典C/C++学习工具的环境配置与调试技巧 集成开发环境(IDE)是程序员编写、编译和调试代码的核心工具,其设计理念直接影响学习曲线和开发效率。传统IDE如Visual C++ 6.0(VC6++)通过提供封闭、零配置的“沙箱”环境,降低了初学者在环境搭建和项目配置上的认知负荷,使其能将注意力集中于C/C++语言语法和程序逻辑本身。这种设计在工程教学领域形成了独特的生态位,尤其适合编程入门阶段。从技术价值看,掌握VC6++的编译、链接和调试流程,有助于理解IDE工作的底层原理,为后续迁移到现代工具链奠定基础。在应用场景上,它常被用于高校C语言课程、算 阅读详情

今天偶然写了下面的程序(原来我写的程序不一样,下面的只是为了把问题简化)

 

  

 

不幸的是偶然将这个文件保存成了test.c,然后编译的时候出现了

 

error, error C2143: syntax error : missing ';' before 'type'

 

感觉很奇怪,细细看来所有的语法都似乎都是对的,更奇怪的是把文件改成cpp或者cc能正常编译,把int a;和if调换下也能正常编译。这样的错误可能发生在当变量的声明放在可执行代码之后。而这个是在K&R C中规定的,但在ANSI C中废除。

MSDN (http://support.microsoft.com/kb/58559)给出的解释如下:

 


 

In Microsoft C, compiler errors C2143 and C2144 are defined as follows:

    C2143: syntax error : missing 'token1' before 'token2'
    C2144: syntax error : missing 'token' before type 'type'

 

You may receive this error message if your program places executable code before a data declaration, an acceptable practice in Kernighan-and-Ritchie C. This practice has been outlawed in later versions of the ANSI drafts.

This error message will normally occur if a required closing curly brace (}), right parenthesis [)], or semicolon (;) is missing.


 

注: The C Programming Language的作者简称K&R,也是C语言之父, 经常用K&R C来和ANSI C做对比。这本书的第二版已经用ANSI.

我用的编译器是VS2008, 看来微软向来无视标准。

 

总结:

在 ANSI C或者C++中,在可执行代码中随时定义变量是允许的,但是在K&R C中是不允许的,VS2008实现的C竟然是K&R C。注意这样的错误也体现在VS中要是用for (int i = 0; i++; i<10)同时你的文件名是.c的也会出现这样的错误。

 

Code complete中讨论过变量名的最迟绑定有利于增加代码的可读性等。所以在VS中写c要注意了。

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/fancylea/archive/2009/06/10/4256793.aspx

VC++ 2010:C/C++入门环境搭建与核心调试实战指南 C/C++作为系统级编程语言,其核心在于对内存管理、数据类型和编译原理的深入理解。学习编程的第一步往往是环境配置,一个稳定、简洁的开发环境能帮助初学者聚焦语言本质,避免被复杂的工具链分散注意力。Visual C++ 2010 Express学习版正是这样一个经典选择,它提供了纯粹的C/C++开发体验,特别适合国内教育体系和自学者。通过搭建环境、编写第一个程序、掌握调试技巧,学习者可以深入理解从源代码到可执行文件的完整流程。本文以VC++ 2010为例,详细演示了如何配置开发环境、编写Hello World程 阅读详情

相关推荐

C++入门经典第10版学习指南:资源获取、环境搭建与高效学习方法

C++作为一门经典的面向对象编程语言,其核心在于通过编译器将高级代码转换为可执行机器指令。理解编译、链接的原理是掌握C++开发的基础,这直接关系到程序能否正确构建与运行。对于初学者而言,选择一本结构清晰、配套资源完善的教材至关重要,它能系统性地引导学习者从语法基础过渡到现代C++特性。在工程实践中,一个稳定、友好的开发环境(如Visual Studio)和科学的实操方法(如结合配套源码调试)能极大提升学习效率,减少在环境配置和基础错误排查上的时间消耗。本文围绕《C++入门经典(第10版)》这一经典教材,针对

weixin_30240349的博客 438

C语言编译出现error C2143: syntax error : missing ';' before 'type'的解决办法

最近开始摸索着学习c语言,在编译程序的时候会遇到下面的提示错误 C:\run.c(41) : error C2143: syntax error : missing ';' before 'type' 但是自己刚开始的时候检查代码并没有找到问题出现的原因,对了,我用的是VC 6.0编译。 解决办法如下:将一个代码块中的声明放在该代码块的最前面。 也就是说,在该编译环境下的.c文件中一个代码...

张张的博客 5万+

error C2143: syntax error : missing ';' before 'type'

# include&lt;stdio.h&gt; int main(void) { int i=10; i = 8; int j = 10; //报错 error C2143: syntax error : missing ';' before 'type' return 0; } 需要注意的是,变量只能在程序语言的开头定义,或者说变量的前面不能有其他非声明或者非定义的语言,编译的时候会...

人生代码 ---- 公众号 7436

关于C程序编译出现 error C2143 syntax error missing before type的解决办法

在纯C中,在一个代码块中变量声明必须在最前面 在运行程序时发现了一个问题,用 VC 6.0 编译 C语言是 总是提示一个错误:error C2143: syntax error : missing ‘;’ before ‘type’。解决方法如下:把所有变量的声明放在可执行代码之前。 出现此问题的原因在于:将文件保存成了 .c 格式。如果是 cpp 格式就能正常编译。改成.cpp就可以正常运行,和你变量声明的位置就没有关系了。* 一般在 ANSI C 或者 C++中,在可执行代码中随时定义变量是

文轩 3607

【Unity Shader】2D模型 3D模型混用的穿模问题(Spine在3D场景中出现前后穿模问题的解决办法)

问题描述: 在3D场景中使用Spine模型(2D), 因为Spine需要像Billboard类似的处理,永远是垂直与相机的, 所以一般情况下2D模型能正常显示且前后的阻挡关系也是没有问题的,如下图所示,一切都很美好.(这里用一个四边形,图中的福字表示2D模型) 可是如果后面蓝色的格子比较高,或者2D角色本身也比较高,那么就会出现模型穿插的问题,如下图所示: 如果吧2D模型竖立起来,前后关系肯定是没有问题的,所以也能避免模型穿插的问题,可是就没有Billboard效果,圆形的福字已经被压扁了,如下图:

Vitens的专栏 4591

告别外置天线!手把手教你用HFSS仿真设计一个20x40mm的433MHz PCB蛇形天线

本文详细介绍了如何使用HFSS仿真工具设计一个20x40mm的433MHz PCB蛇形天线,解决物联网设备小型化中的天线集成难题。通过对比外置天线与PCB天线的性能差异,深入解析蛇形天线的电磁学原理,并提供从建模到优化的全流程实战指南,帮助工程师实现高效、低成本的微型化天线设计。

weixin_30606461的博客 431

VC++中编译C出错:error C2143: syntax error : missing ';' before 'type'

描述: 近来写程序时发现了一个问题,用 VC 编译 C语言是 总是提示一个错误:error C2143: syntax error : missing ';' before 'type'。 分析: 出现此问题的原因在于:将文件保存成了 *.c 格式。如果是 cpp 格式就能正常编译。 这是因为:在 ANSI C 或者 C++中,在可执行代码中随时定义变量

lanximu的专栏 2233

语音数据标注工具与平台

最近在做语音深度学习的项目,整理了一下语音数据标注工具和语音标注平台,供大家参考 语音标注工具–Praat Praat是目前已经成为比较流行也比较专业的语音处理的软件,可以进行语音数据标注、语音录制、语音合成、语音分析等等,具有免费、占用空间小、通用性强、可移植性好等特点 官网链接 http://www.fon.hum.uva.nl/praat/ 汉化版下载 http://www.hejingzo...

qq_21379593的博客 1万+

奇怪的 error C2143: syntax error : missing ';' before 'type'

代码: int x = 6; if (bFlag)    x = 8; int y = 6; VS2005编译报错: error C2143: syntax error : missing ';' before 'type' 报错位置: int y = 6; 去掉  if(bFlag)    x = 8; 编译成功,这不应该啊,没有语法错误。 最后去掉 int y

zuiyuezhou888的专栏 2117

基于 YOLOv26 的车辆违规停车检测系统:实时监控

本文提出了一种基于YOLOv26的车辆违规停车实时检测系统。系统采用多模块架构,包括视频预处理、YOLOv26目标检测、DeepSORT目标跟踪、停车区域定义、行为分析和违规判定等功能模块。关键技术包括使用YOLOv26s模型进行车辆检测,结合DeepSORT算法实现车辆跟踪,支持多种停车区域定义方式(多边形、矩形、限时区域等)。系统通过边缘计算平台部署,实现了对道路边、禁止停车区等场景的实时监控,能够准确识别长时间停车、禁止区域停车等违规行为,并触发告警机制。实验结果表明,该系统在车辆检测准确率和违规判定

一键难忘的博客 773

【乐企-工具篇】生成发票左上角二维码

【代码】【乐企-业务篇】生成发票左上角二维码。

九七的博客 708

K&R C vs ANSI C (error C2143: syntax error : missing ';' before 'type' in Visual Studio 2008)

今天偶然写了下面的程序(原来我写的程序不一样,下面的只是为了把问题简化)void foo(){    int p = 0;    if ( p == 0 ) {        int i = 0;    }     int a;} int main(){    foo();} 不幸的是偶然将这个文件保存成了test.c然后编译的时

※旅程※ 6779

【原创教程】AB上位机FactoryTalk View的使用教程

条形图主要的作用就是根据绑定的变量中数字大小的变化来反映到图形中,随着数字的增加填充的颜色不断上升或随着数字的减小填充的颜色不断下降。绘图功能中常用的功能主要是:数字输入,数字输出,字符输入,字符输出,各种类型的的按钮,条状图,各类控件,系统自带的图形库。颜色指的是根据PLC变量的变化来改变图形的颜色,可以绑定BOOL量来显示两种颜色,也可以绑定字节,字,双字等来显示多种颜色。打开软件后右键点击画面选项然后点击新建则新建出一个画面,画面画好后点击保存并更改标题后新建的画面则会出现在画面选项的文件夹下。

Qinmingyue13的博客 4676

error C2143的原因及解决办法

error C2143的原因及解决办法。

clever101的专栏 3万+

059、RealBasicVSR 实战:真实场景视频超分的退化建模与优化技巧

本文分享了RealBasicVSR在真实场景视频超分中的实战经验。针对传统方法假设理想化下采样导致的性能瓶颈,重点阐述了三个关键技术点:1)通过可学习退化编码器建模复杂未知退化过程,避免手动设计退化参数的局限;2)采用双向传播和DCN对齐增强时序一致性;3)组合多种损失函数并优化训练策略(如余弦退火学习率、随机退化增强)。作者结合项目实践指出了显存管理、训练时长、评估指标等常见问题,并给出实用建议:优先验证数据退化复杂度,重视数据预处理,合理调整超参数。文章强调真实场景视频超分的核心在于让模型自适应未知退化

ai技术增长的博客 180

脉冲变压器电感选型参数,结构原理,工艺与注意问题总结

脉冲变压器电感简称脉冲变压器,是一种特殊类型的变压器,主要用于处理脉冲信号。它的主要特性是能够在短时间内承受高电压和大电流。脉冲变压器主要用于开关电源、脉冲功率放大、雷达脉冲调制等领域。本文对脉冲变压器的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1344

KR C vs ANSI C (error C2143: syntax error : missing ';' before 'type' in Visual Studio 2008)

今天在VS2008下编译c程序遇到的,在网上搜索了一下,也有同学碰到过,就直接转贴于此。 void foo(){ int p = 0; if ( p == 0 ) { int i = 0; } int a;}int main(){ unsigned char ByteNum; By

hi 1634

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

vs2005 C编译错误syntax error : missing ';' before 'type'

在软件vs2005中,代码如下: void function(int )

sdkhy0808的专栏 1598

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

error C2143: syntax error : missing ';' before ...

为什么80%的码农都做不了架构师?>>> ...

weixin_34223655的博客 170

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Visual C++6.0一个小BUG的解决方法 (转)

Visual C++6.0一个小BUG的解决方法 (转)[@more@]Visual C++6.0一个小bug的解决方法用Visual C++6.0进行api编程时,若在.rc文件中加入/删除一些代码(菜单选项等),再编译,有时...

csd3176的博客 147

syntax error : missing ';' before '*' 'CMyImageProcessOneDoc' : missing storage-class or type 'CM

error C2143: syntax error : missing ';' before '*' error C2501: 'CTest1Doc' : missing storage-class or type specifiers error C2501: 'GetDocument' : missing storage-class or type specifiers 遇到这种莫名的错

WALL_E的专栏 517

Visual Studio不支持C++14?从版本诊断到项目配置的完整解决方案

C++语言标准是编程语言演进的基石,它定义了语法、库和核心特性,确保代码在不同编译器间的可移植性。从C++98到C++14、C++17,每个新标准都引入了更现代化的特性,如自动类型推导、lambda表达式和泛型编程增强,提升了开发效率和代码表现力。这些新特性的技术价值在于简化复杂模板代码、改善资源管理和支持函数式编程范式,广泛应用于高性能计算、游戏引擎和系统软件开发。在实际工程中,开发环境配置与编译器版本直接决定了能否使用这些新特性。本文聚焦Visual Studio这一主流IDE,针对其不支持C++14标

weixin_34413103的博客 522
上一篇: 【转】HTTP协议(rfc2626)中文翻译(修订版)
下一篇: 【转】gcc 和 g++ 的区别
cdjogh
博客等级 码龄19年 2粉丝 3原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值