做 C 的人都知道如果所定义函数只在本文件中用,那么应该声明为 static

但看 Android 看 bionic 的代码bionic/libc/bionic/pthread.c 发现有这样的代码片段

   1269 __LIBC_HIDDEN__1270 int pthread_mutex_unlock_impl(pthread_mutex_t *mutex)1271 {1272     int mvalue, mtype, tid, oldv, shared;1273 1274     if (__unlikely(mutex == NULL))1275         return EINVAL;1276 1277     mvalue = mutex->value;1278     mtype  = (mvalue & MUTEX_TYPE_MASK);1279     shared = (mvalue & MUTEX_SHARED_MASK);

既然此函数给本文件其他代码用的,为何不直接定义为 static

    #define __LIBC_HIDDEN__                          \__attribute__ ((visibility ("hidden")))

查资料得知,原来 hidden 功能是让函数在本 share libs 之外不可见, 就是说本库中应该还有其他 文件(Unit)使用到这个函数

search 之,果然发现

pthread_debug.c 451 extern int pthread_mutex_unlock_impl(pthread_mutex_t *mutex);

                        458 return pthread_mutex_unlock_impl(mutex);
pthread.c          1270 int pthread_mutex_unlock_impl(pthread_mutex_t *mutex) function

static 和 visibility hidden 的区别相关推荐

  1. [css] 说说display:none和visibility:hidden的区别

    [css] 说说display:none和visibility:hidden的区别 display:none dom对象不渲染. visibility:hidden 隐藏但是dom对象渲染. 个人简介 ...

  2. display:none和visibility:hidden的区别

    在使用CSS隐藏一些元素时,我们经常用到 display:none 和 visibility:hidden.两者差别如下: 1. 是否占据空间 display:none,该元素不占据任何空间,在文档渲 ...

  3. _blank 和 _self的区别以及display:none和visibility:hidden的区别

    _blank 和 _self的区别 target=_blank会在当前窗口之外再打开一个新窗口来显示新的页面 target=_self在当前窗口打开新页 面 display:none和visibili ...

  4. display:none;与visibility:hidden;的区别

    display:none;不会占用任何空间 visibility:hidden;会占用隐藏前的空间大小 转载于:https://www.cnblogs.com/yaser/p/4414825.html

  5. display:none 和 visibility:hidden的区别

    display:none; 隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,就当它从来不存在 visibility:hidden; 隐藏对应的元素,但是在文档布局中仍保留原来的空间

  6. display:none和visibility:hidden两者的区别

    使用css让元素不可见的方法有很多种,裁剪.定位到屏幕外边.透明度变换等都是可以的.但是最常用两种方式就是设置元素样式为display: none或者visibility: hidden.很多公司的面 ...

  7. css3新增选择器、伪元素、隐藏元素的方法、visibility: hidden与display:none;的区别 、遮罩层效果、​ 三级菜单制作、选项卡制作——css3知识点总结

    目录 css3新增选择器 兄弟选择器 属性选择器 伪类选择器 其他伪类选择器 类元素选择器 直接选择器 否定选择器 伪元素 :after清除浮动 :before和:after 用来写小三角形 首字母 ...

  8. visibility: hidden与display:none的区别

    要想了解visibility: hidden与display:none的区别,我们还是先来看看他们各自的定义及用法. visibility属性 定义: visibility 属性规定元素是否可见 说明 ...

  9. display:none和visibility:hidden和透明度的区别

    **当想实现一个区域或者内容的消失(隐藏)**,我们有多种代码可以实现.但是根据要求和用户体验,应该选择最合适的方法实现.代码中最常用的代码包括:display:none; visibility:hi ...

最新文章

  1. hive中的绣花模型_hive建模方法
  2. 乌镇现场·帅初:公有链的未来——链上校验,链下计算
  3. JAVA设计模式--辛格尔顿
  4. [ZJOI2007] 时态同步(拓扑序)
  5. aws ec2 跨帐号共享_AWS共享资源的警告
  6. 编辑距离(信息学奥赛一本通-T1276)
  7. 12岁上大学,23岁获博士学位,这位天才科学家正式加盟清华
  8. Ajax技术原理小结
  9. Jono Bacon的社区管理指南
  10. 有感而发谈谈苏轼的一生
  11. npm start 和 npm run start的关系以及npm run start传递参数
  12. 计算机主板常见故障检修,主板常见故障检查与维修
  13. 微信官方:刚刚拆散一桩19万元的姻缘
  14. 《内功修炼系列》之-递归从入门到入土(收藏版)
  15. ThinkPHP3.1.3 { Fast Simple OOP PHP Framework } — [ WE CAN DO IT JUST THINK ] 报错解决办法。...
  16. redis+Python实现小型动态IP池的搭建,仅需90行代码
  17. 【ACL Findings 2021】Does Robustness Improve Fairness? Approaching Fairness with Word Substitution R
  18. python传智播客王铭东_传智播客Python学科的王铭东老师讲的怎么样 |
  19. 正确理解UNICODE UTF-8等编码方式
  20. 收银怎样挂单和取单_收银机如何取消挂单

热门文章

  1. 火柴Open Day,你永远不知道你错过了什么!!
  2. Inconsistency detected Invalid view holder adapter position
  3. 对有些反编译不成功的apk,请更新最新的apktool.jar、 dex2jar试试
  4. Android - Activity 生命周期
  5. 让世界没有陌生的角落共享单车时代的快与慢
  6. spring MVC interceptor post遇到问题
  7. 个人vscode插件配置全记录
  8. 放弃深度学习?我承认是因为线性代数
  9. Lichee(两) 在sun4i_crane该平台下编译
  10. PHP Object对象转换为Array数组