do{}while(0)宏的作用的定义】的更多相关文章

看到开放源代码,宏定义经常这样用 #define some() do { do_somt_thing(); } while (0) 为什么这样用? 能够试一下.假如一个普通宏定义 #define some(x) Fun1(x);Fun2(x) if(condition) some(x); 变为 if(condition) Fun1(x); Fun2(x); 这样直接加个花括号不久行了,为什么还用do......while()?假如加上花括号 #define some(x) {Fun1(x);Fu…
linux内核和其他一些开源的代码中,经常会遇到这样的代码: do{ ... }while(0) 这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢? 实际上,do{...}while(0)的作用远大于美化你的代码.查了些资料,总结起来这样写主要有以下几点好处: 1.辅助定义复杂的宏,避免引用的时候出错: 举例来说,假设你需要定义这样一个宏: #define DOSOMETHING()\ foo1();\ foo2(); 这个宏的本意是,当调用DOS…
在linux内核中重新定义了printk,如pr_debug,dev_dbg等.要使用这些宏函数就需要定义DEBUG. 详见:kernel printk信息显示级别 那么DEBUG该定义在什么地方呢? 定义到pr_debug或dev_dbg头文件中,则内核所有的宏都起作用.则打印信息太多,不易调试. 理想的宏定义 应该是想打印信息的模块或文件中,那应放到什么位置呢? 最好放到使用文件的最开头 测试用例: //#define DEBUG static inline int poww(int v)…
一.简述Python的五大数据类型的作用.定义方式.使用方法: 1. 数字类型int: 1.整形 作用:可以表示人的年龄,身份证号码,身高和体重等 定义方式:  weight = 130 print(weight) weight1 = int(130.2) print(weight1 ) 130 130 使用方法: a=2 b=2 print(a+b) print(a-b) print(a*b) print(a/b) print(a//b) ## 取整 print(a%b) ## 取余 prin…
在C语言#define机制中包括了一个规定,与允许把参数替换到文本中,这种实现通常称为宏或宏定义.下面是宏的声明方式: #define      name(parameter-list)          stuff 其中  parameter-list的左括号必须与name紧邻,如果中间有空白,parameter-list就会被解释为stuff的一部分. 宏的作用 1.替换作用:在程序中使用宏可以进行快速的替换. 2.执行简单的计算使用宏在程序的规模和速度方面都更胜一筹. 3.条件编译:可以通…
在 Typescript 2.0 中使用 @type 类型定义 基于 Typescript 开发的时候,很麻烦的一个问题就是类型定义.导致在编译的时候,经常会看到一连串的找不到类型的提示.解决的方式经过了许多的变化,从 DefinitelyTyped 到 typings.最后是 @types.在 Typescript 2.0 之后,推荐使用 @types 方式. DefinitelyTyped 这个工具已经不被推荐,仅作介绍. 多数来自 javascript 的库是没有 TypeScript 类…
sql where 1=1和 0=1 的作用 摘自: http://www.cnblogs.com/junyuz/archive/2011/03/10/1979646.html where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where  1=1  在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: string MySq…
上篇整理了USB 2.0A型.B型和Mini USB接口定义及封装,本文补充USB 3.0接口定义,USB 3.0采用的双总线结构,在速率上已经达到4.8Gbps,所以称为Super speed,在USB 3.0的LOGO上显示为SS,由于接口变化太大,再加上把USB 3.0协议集成到相关芯片组肯定也需要时间,所以USB 3.0的普及应该至少再需三年以上. 说明: 本文插图及封装尺寸来源,USB 3.0-final.pdf(Date:November/12/2008),USB 3.0协议可在US…
IE10在NET4.0下出现"__doPostBack未定义"的办法 参考文章: http://blogs.msdn.com/b/scott_hanselman/archive/2011/10/28/asp-net-ie10-dopostback-javascript-ff5.aspx 方法一.浏览器设置成兼容模式. 方法二.安装服务器版的.Net40的补丁. http://pan.baidu.com/s/1hqnCQ7U 包括适用于x86和x64 方法三.点击VisualSutdio…
Spring 中bean的作用.定义: 创建一个bean定义,其实质是用该bean定义对应的类来创建真正实例的"配方(recipe)".把bean定义看成一个配方很有意义,它与class很类似,只根据一张"处方"就可以创建多个实例. 你不仅可以控制注入到对象中的各种依赖和配置值,还可以控制该对象的作用域.这样你可以灵活选择所建对象的作用域,而不必在Java Class级定义作用域.     更多文章: 采用Spring管理Bean和依赖注入-http://www.b…
sql where 1=1和 0=1 的作用 原文地址:http://www.cnblogs.com/junyuz/archive/2011/03/10/1979646.html where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where  1=1  在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: string MyS…
websphere7.0错误:SRVE0255E: 尚未定义要处理 /wcm 的 Web 组/虚拟主机. SRVE0255E: 尚未定义要处理 /wcm 的 Web 组/虚拟主机.SRVE0255E: 尚未定义要处理 192.168.2.11:9081 的 Web 组/虚拟主机. 1.你的服务器端口未在虚拟主机里配置2.你的上下文根在访问时没有输入正确 How to resolve it: step 1: add relative ports in ISC: Environment->Virtu…
sql where 1=1和 0=1 的作用   where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where  1=1  在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: string MySqlStr=”select * from table where”: if(Age.Text.Lenght>0) { MySqlS…
Office宏病毒学习第一弹--恶意的Excel 4.0宏 前言 参考:https://outflank.nl/blog/2018/10/06/old-school-evil-excel-4-0-macros-xlm/ 弹药库 初始化 可以通过首先插入类型为" MS Execel 4.0 Macro"的新表来对Microsoft Excel Spreadsheet进行武器化处理: 1.右击表单插入一张 4.0宏表 2.在第一个单元格和下面的单元格分别写入 =EXEC("cal…
Javascript 中右移0位可以用来快速去掉小数,关于位移运算的定义: 右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位. 实际看下效果: 32.5 >> 0  // 32 右移是什么作用? (32).toString('2') // 转换为2进制,得到 100000 ( 32 >> 1 ).toString(2) // 右移1位,得到 10000 对比下: 100000  // 实际值 32 010000  //…
转载自:http://blog.chinaunix.net/uid-20729583-id-1884553.html 这 些宏包括 __init.__initdata.__initfunc().asmlinkage.ENTRY().FASTCALL()等等.它们的定义主要位于 Include/linux/linkage.h和 include/asm-i386/Init.h以及其他一些.h文件中. 1) __init位置:include/asm-i386/Init.h 定义:#define __i…
问题?spring的定义及作用.spring的环境搭建 一.spring的定义及作用 1.spring由Rod Johnson创建的一个开源框架,它是为了解决企业应用开发的复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅限于服务器端的开发.从简单性.可测试性和松耦合的角度而言,任何Java应用都可以从Sprin…
操作mysql的时候,经常使用where语句进行查询.当where语句不存在的时候,经常在后面加一个where 1=1 where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where 1=1 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: string MySqlStr="select * from table where…
一 作用 http://www.cnblogs.com/xieex/archive/2008/07/11/1241151.html 经常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗? 延时0秒能将函数执行脱离出当前环境: 当一个事件发生时,其相关的操作还没完成. 所以: 1 keypress事件中并不能获得 此处输入的字符,只能获得之前的 2 radio 的 click事件中,并不能获得此处点击是否选中该radio,而是获得点击之…
原文地址:http://blog.csdn.net/zhenwenxian/article/details/8564574 内核的部分函数带有__init和__exit宏,负责“初始化”和“清理收尾”该函数.如果该模块被编译进内核,而不是动态加载.宏 __init的使用会在初始化完成后丢弃该函数并收回所占内存, 宏__initdata同__init 类似,只不过对变量有效.简单来说是指示gcc把标记的数据或者函数放到指定sector. linux中把一些启动及初始化时候用的数据用__init标识…
以下代码输出的顺序是? console.log(1); setTimeout(function(){ console.log(2); }, 0); setTimeout(function(){ console.log(3); }, 1000);console.log(4); 答案是: 1 4 2 3 经常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来通过查资料以及实验得出以下两个作用,可能还有作用我还不知道,希望得知的朋友在后…
很多初学制作网页的朋友,可能会遇到的一个常见问题,就是在CSS中加了margin:0 auto;却没有效果,不能居中的问题!margin:0 auto;的意思就是:上下边界为0,左右根据宽度自适应!其实就是~~水平居中的意思.下面我就列举集中居中没作用的情况: 1:没有设置宽度.margin:0 auto居中是要设置宽度滴. 2:没声明DOCTYPE:DOCTYPE是document type(文档类型)的简写,在web设计中用来说明你用的XHTML或者HTML是什么版本.要建立符合标准的网页,…
转自:http://blog.csdn.net/ljb_wh/article/details/40788333 ios7的时候在storyboard 设置 TableView的separator intend = 0 可以让tableview的分割条顶到头. 但是,升级了iOS8时,发现不起作用了. 经过google,在 stackoverflow 发现了答案 翻译纪录一下 iOS8 在cell和tableview中都引入了layoutMargins属性,而且这个属性在iOS 7中并没有,所以你…
在PHP源码中,我们经常会看到很多函数前面有个PHPAPI,但这是什么呢? 于是我在php源码/main/php.h中找到了它的定义 #ifdef PHP_WIN32 # include "tsrm_win32.h" # include "win95nt.h" # ifdef PHP_EXPORTS # define PHPAPI __declspec(dllexport) # else # define PHPAPI __declspec(dllimport) #…
背景介绍: 在做织梦冗余图片清理的功能时, 由于冗余图片太多,导致每次清理时都会超时, 后来在网上搜索了各种文章,网上有如下的解决方法: set_time_limit(0) ini_set('max_execution_time',1800);//单位秒     ini_set('max_input_time',1800);//单位秒 但是尝试之后都不起作用. 解决思路: 后来, 偶然发现一段时间后(改时间要小于超时时间)通过echo信息, 达到与客户端进行交互的手段, 可以规避超时(reque…
基站0 通过串口将系统中测得的距离信息发送到电脑,电脑定位软件通过三边定位算法计算出TAG的坐标,基站0 和 定位软件之间的数据格式定义如下(对官方数据结构进行了简化) 更多UWB定位信息请参阅论坛bphero.com.cn…
经常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来通过查资料以及实验得出以下两个作用,可能还有作用我还不知道,希望得知的朋友在后面评论上不吝指出.1.实现javascript的异步:正常情况下javascript都是按照顺序执行的.但是我们可能让该语句后面的语句执行完再执行本身,这时就可以用到setTimeout延时0ms来实现了.如: alert(1); setTimeout("alert(2)", 0); ale…
where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where 1=1 在多条件查询中的困扰 举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下: ①种假设 如果上述的两个IF判断语句,均为True,即用户都输入了查询词,那么,最终的MySqlStr动态构造语句变为: MySqlStr=”select * from table where Age='…
where 1=1; 这个条件始终为True,在不定数量查询条件情况下.1=1能够非常方便的规范语句. 一.不用where  1=1  在多条件查询中的困扰 举个样例,假设您做查询页面,而且.可查询的选项有多个,同一时候.还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体例如以下: string MySqlStr="select * from table where": if(Age.Text.Lenght>0) { MySqlStr=MySqlStr+…
<script type="text/javascript" src="jquery1.4.js"></script><script type="text/javascript">$(function(){    $(".test li,.test dd").click(function(){        alert('本身为大写:' + $(this).get(0).tagName +…