试想这样的情景,程序调用某函数A,A函数存在于两个动态链接库liba.so,libb.so中,并且程序执行需要链接这两个库,此时程序调用的A函数到底是来自于a还是b呢? 这取决于链接时的顺序,比如先链接liba.so,这时候通过liba.so的导出符号表就可以找到函数A的定义,并加入到符号表中,链接libb.so的时候,符号表中已经存在函数A,就不会再更新符号表,所以调用的始终是liba.so中的A函数 这里的调用严重的依赖于链接库加载的顺序,可能会导致混乱:gcc的扩展中有如下属性__attr…
在 objc-api.h 里面有很多关于__attribute__ 的定义. 例如 #if !defined(OBJC_VISIBLE) # if TARGET_OS_WIN32 # if defined(BUILDING_OBJC) # define OBJC_VISIBLE __declspec(dllexport) # else # define OBJC_VISIBLE __declspec(dllimport) # endif # else # define OBJC_VISIBLE…
http://my.oschina.net/senmole/blog?catalog=153878 Linux Kernel的代码,上次就发现一个结构体的定义形式看不懂,后来才知道它用的不是标准的ANSI C,而是GCC的一些扩展.刚好看到<Linux内核修炼之道>中对GCC扩展有所描述,转载一下吧,对看kernel代码有所帮助. .5内核代码的特点 Linux内核同时使用C语言和汇编语言实现,C语言编写的代码移植性较好.易于维护,而汇编语言编写的代码相当于针对特定的平台做了优化,速度较快,所…
问题提出 在学习IOS时候,碰到一个函数NSStringFromCGPoint (UIGeometry.h) 其原型是 UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); 原型分析 NSString* , CGPoint好理解, 前者是库自带的字符串类型, 后者是一个表示2维平面上的点的结构体.但是UIKIT_EXTERN是什么呢?查找发现 UIKitDefines.h #ifdef __cplusplus #define UIK…
1.版本问题 如果你可以获取下列元素 <input type="hidden"/> <div style="display:none">123</div> 而你使用的JQuery是高于1.3版本的,你获取不到通过visibility:hidden样式隐藏的元素就对了 2.解决方案 $("div").filter(function() { if($(this).css("visibility"…
大多数人很容易将CSS属性display和visibility混淆,它们看似没有什么不同,其实它们的差别却是很大的. visibility属性用来确定元素是显示还是隐藏的,这用visibility="visible|hidden"来表示(visible表示显示,hidden表示隐藏). 当visibility被设置为"hidden"的时候,元素虽然被隐藏了,但它仍然占据它原来所在的位置.例: <script language="JavaScript&…
CSS样式“display:none”和“visibility:hidden”都可以实现将页面元素隐藏,但是具体的效果是有差别的!下面通过两个小实验来说明这种差异. 实验代码: <!DOCTYPE html> <html> <head> <title>none</title> <meta charset="utf-8"> <style type="text/css"> div { h…
display:none和visibility: hidden都能把网页上某个元素隐藏起来,但两者有区别: display:none ---不为被隐藏的对象保留其物理空间,即该对象在页面上彻底消失. visible:hidden--- 它只是把当前控检的标记标识为不显示,但该对象在网页上所占的空间没有改变,但在页面呈现的HTML标记语言中是存在着的,换句话说就是用JS取查找这个控检是可以查找到的. display的常用属性: none:元素不显示,且不占空间: block:元素显示为块状元素 i…
之前写过一篇有关visibility:hidden和display:none的文章:为什么要用用visibility:hidden;代替display:none;?主要是从浏览器性能方面入手,却没写两者的主要区别,今天补充. 首先display:none,这个none会把元素从dom树中"摘除",这时其他元素会立马填充该元素的位置,也就是说一旦设置为none,这个元素是真的不存在了. 而visibility:hidden,它就像一块"抹布",把花花绿绿的元素都擦成透…
为什么要用用visibility:hidden;代替display:none;?因为后者更加消耗浏览器: css绘制画面有两种形式:repaint 和reflow,当我们更改css属相如background时,浏览器只需repaint就行,dom节点的大小.位置均未发生改变,我理解为:原地不动只是换个颜色填充而已.这时的开销就小. 当我们操作dom节点要改变其大小和位置时,对浏览器来说就比较麻烦了,必须要进行reflow,重新定位,重新布局,只不过对于现在的电脑硬件和高版本浏览器来说这倒不是显而…