do while 后面要加分号,你大爷的

do
{
    //do something
} while (0)

TSfree(url);

这个TSFree 正好是个宏,然后编译就提示错误:

error: expected ‘;’ before ‘_TSfree’
 #define TSfree(p) _TSfree(p)
                   ^xyzabc.cc:212:2: note: in expansion of macro ‘TSfree’
  TSfree(url);
  ^

分析N久才发现,原来 do while 后面要加分号。

C 语言用了这么多年,还真是没有注意过这个细节。

时间: 2024-08-05 06:50:27

do while 后面要加分号,你大爷的的相关文章

为什么函数声明后可以不加分号而函数表达式后要加分号呢?

JavaScript:为什么函数声明后可以不加分号而函数表达式后要加分号呢?是就是这个硬性规定的,还是有什么机制原因呢 function functionName(arg0,arg1,arg2){ //函数声明} var functionName=function(arg0,arg1,arg2){ //函数表达式}; //注意分号

@class CLASS ;必须加分号,且卸载@interface之前

1. @class CLASS ;必须加分号,且卸载@interface之前 示例代码如下: #import <UIKit/UIKit.h> @class WZProduct;  //注意必须加分号,因为是告诉.h文件,WZProduct是一个类,类似声明变量,是一句完整的话 @interface WZProtoCell : UITableViewCell @property (strong,nonatomic) WZProduct *model; @end 2.所有的#define ,#im

JavaScript 语句后应该加分号么?

分号加与不加完全取决于个人习惯,但为了代码稳定(解析出错)还是建议使用分号断句. JavaScript自动加分号规则:1.当有换行符(包括含有换行符的多行注释),并且下一个token没法跟前面的语法匹配时,会自动补分号.2.当有}时,如果缺少分号,会补分号.3.当程序源代码结束时,如果缺少分号,会补分号.结论:1.在return.break.continue.后自增.后自减五种语句中,换行符可以完全替代分号的作用.2.var if do while for continue break retu

宏定义末尾为什么不能加分号

比如 #define NUM  3; 注意末尾有一个分号 printf("%d",NUM); 宏替换的时候会变成这样 printf("%d",NUM;); 会多出一个分号,这样会提示语法错误. 那怎么改呢? 可以改成#define NUM 5); printf("%d",NUM 这样编译的时候会把NUM替换为5); 最后形成的语句是printf("%d",5); 突然发现可以利用宏定义来降低代码的可读性啊,能不能用在混淆php

JavaScript什么时候必须加分号

代码以 ( 开头 ;(function () { console.log('hello') })() 以 [ 开头 ;['苹果', '香蕉'].forEach(function (item) { console.log(item) }) 代码以`开头 ;`hello`.toString() 结论:无论你的代码是否有分号,都建议如果一行代码是以 (.[.` 开头的,则最好都在其前面补上一个分号. 原文地址:https://www.cnblogs.com/L-xmin/p/12405565.html

JavaScript语法中分号使用的细节

关于JavaScript中可选分号的问题有几个细节要注意: 一般来说,JavaScript和其他语言一样都是使用分号,将语句隔开,但在JavaScript中,如果语句各自独立一行,有时也可以省略分号的 细节1: 如果当前语句和随后的非空格字符不能当成一整体来解析的话,JavaScript就在当前语句行结束处自动填补分号 var a a = 3 console.log(a); JavaScript将上述代码解析为: var a; a=3; console.log(a); 第一行代码 var a自动

js中如果省略分号那么它是如何运行的

在javascript工作中,我们几乎不会去省略分号:为了不必要的麻烦以及代码的规范,那么如果我们省略:会发生呢?预知详情请听下回分解. 看代码! 片段一: 1 var a 2 = 3 8 4 console.log(a); >>8 片段二: var a b = 8 console.log(a); >>undefined console.log(b); >>8 console.log(ab); >>Uncaught ReferenceError: ab is

JS加DOM理解

1. ***变量 2. ***数据类型 一. ***变量:内存中存储*一个*数据的存储空间,再起一个名字 何时使用:程序中反复使用的数据,都要先保存在变量中,再参与运算 如何使用:声明   赋值    取值 1. 声明:在内存中创建一个新变量 如何声明:var 变量名; 仅声明,但暂未赋值,默认值为undefined 变量命名:1. 不能以数字开头,仅能包含字母,数字和下划线 2. 不能用保留字:js中已经预先使用的关键字 比如:name X 3. 见名知意 4. 驼峰命名:第一个单词首字母小写

[Effective JavaScript 笔记] 第6条:了解分号插入的局限

分号可以省略 js可以在语句结束不强制加分号.(建议还是添加,不添加分号往往会出现不易发现的BUG) function Point(x,y){ this.x=x||0; this.y=y||0; } Point.prototype.isOrigin=function(){ return this.x===0 && this.y===0 } 上面代码可以运行,是由于js可以自动插入分号,它是一种程序解析技术.能推断出某些上下文中省略的分号,然后有效地自动地将分号"插入"到