宏里面的(void)0】的更多相关文章

在<c标准库>实现assert.h中有一个语句: #define assert(test) ((test)?(void)0 : _Assert(__FILE__":"_STR(__LINE__)" " #test)) 其他都理解,就是为啥0还要用void强转一下? 经过一番查阅,原来:给0加void强转,主要的目的是防止该宏被当作右值使用. 比如: int result=assert(test) 如果assert(test)中test为真,返回(void…
前几天看到一个宏, 它大概是这样的: #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__)) 代码的含意简单, 关键是那个 (void)0 的用法, 我还是第一次见到(别笑). 我用 void 的时候, 有两种情况: 1.放到函数前面, 强调函数没有返回值, 也就是说函数不能作右值 如: void fun(int x); 2.放到函数形参里面, 强调函数无任何参数 如: int…
(void)0相当于宏NULL,NULL本身的含义为“空”,在c语言代表“不存在.不确定”的含义. 0不能简单的理解为“没有”的意思,在c语言及二进制中,0和1代表的是“一件事物的正反两个方面“,0是一种明确的状态,不是没有含义. 举例: 1.就像一个led灯开关一样,0代表关,1代表开.”关“是一种明确的状态,代表灯没有亮,”开“也是一种明确的状态,代表灯亮了.”空“代表什么呢?代表没有看到那盏灯(未确定),不知道现在是”开“还是”关“,甚至是不是存在那么一盏灯,都是未知的(未定义). 2.二…
1. 看下宏定义的结构体 typedef struct { ]; //CMEI/IMEI ]; //server ]; //CMEI/IMEI } Options; 2. 定义的NULL #define NULL ((void *)0) 3. 报错的地方 Options dm_config = {"CMEI_IMEI",NULL, NULL}; 4. 修改正确的写法 Options dm_config = {}, {}}; 5. 总结,暂时没觉得两种写法有何区别,保留这个问题…
点击链接不做任何事情: <a href="#" onclick="return false">test</a> <a href="javascript:void(0);" >test</a> <a href="javascript:void(null)">test</a> <a href="javascript:;" >te…
#包含了一个位置信息 默认的锚是#top 也就是网页的上端 而javascript:void(0) 仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#但跳动到了页首 而javascript:void(0) 则不是如此 所以调用脚本的时候最好用void(0) 你可使用如下例子来测试一下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x…
a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP <a href="javascript:void(0)" onClick="window.open()"> 点击链接后,页面不动,只打开链接 <a href="#" onclick="javascript:return false;"> 作用同上,不同浏览器会有差异. 点击链接后,不想使页面滚到页…
有时候我们在编写js过程中,需要触发事件而不需要返回值,那么就可能需要这样的写法   href=”#”,包含了一个位置信息.默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢甚至崩溃. 当然我们一般用三个 href="###",不过看了这篇文章我们以后就可以使用javascript:;(一个冒号一个分号) javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. javascript:;好些,javascript:void(0);…
这是不是一个设计缺陷呢 void(0)这种用法巧妙利用void关键字的特性返回undefined(且没有副作用).因为不是关键字,比如直接使用undefined,内容可能被改写. 再来看为啥使用0,而不是1,2,或"hello world".因为它简单,并成了惯例.http://stackoverflow.com/questions/7452341/what-does-void-0-mean 用处 有一个超链接,如果把dosomething放到href里面,页面就会发生跳转.正确做法如…
一.前言 当使用coffeescript书写如下代码时 name = person?.name 会被预编译为 ; ,那么void 0到底是什么意思呢?运行得知void 0===undefined为true.那为什么不直接使用undefined而要使用void 0呢?而一元运算符void具体又有什么作用呢?下面将展开来说明. 二.为什么不直接用undefined undefined在JavaScript中并不属于保留字/关键字,因此在IE5.5~8中我们可以将其当作变量那样对其赋值(IE9+及其他…