Date: 2018.11.14


参考自:https://blog.csdn.net/wangzhen209/article/details/47152501
https://blog.csdn.net/uestczshen/article/details/53240650

-D_REENTRANT宏作用

_REENTRANT宏
    在一个多线程程序里,默认情况下,只有一个errno变量供所有的线程共享。假设在一个线程准备获取刚才的错误代码时,该变量很容易被另外一个线程中的函数调用所改变。类似的问题还存在于fputs之类的函数中,这些函数通常用一个单独的全局性区域来缓存输出数据。
    为了解决这个问题,需要使用可重入的程序。可重入代码可以被多次调用而仍然工作正常。编写的多线程程序,通过定义宏_REENTRANT来告诉编译器我们需要可重入功能,这个宏的定义必须出现于程序中的任何#include语句之前。

_REENTRANT为我们做了三件事情,并且做得非常优雅:
1)对部分函数重新定义它们的可安全重入的版本,这些函数名字一般不会发生改变,只是会在函数名后面添加_r字符串,如函数名gethostbyname变成gethostbyname_r。
2)stdio.h中原来以宏的形式实现的一些函数将变成可安全重入函数。
3)在error.h中定义的变量errno现在将成为一个函数调用,它能够以一种安全的多线程方式来获取真正的errno的值。


THE END!

【linux/makefile】-D_REENTRANT编译选项的作用相关推荐

  1. 【Linux + Makefile】Makefile中的.PHONY作用以及赋值运算(各种=符号)的区别

    笔者常年在Linux环境编程,经常在项目中与Makefile打交道,最近总结了几个Makefile的小的知识点,分享给大家. 通过阅读本文,你将了解到以下知识: 1.Makefilke中的.PHONY ...

  2. 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序...

    很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...

  3. 【Linux + Makefile】十分钟教你学会Makefile的FORCE

    相信大家在使用Linux环境编程的时候,一定接触过Makefile这个玩意.Makefile在搭建自定义的编译环境,尤其是自动化编译.多功能一键编译等功能上,还是发挥了很大的作用.如果接触过Linux ...

  4. Linux系统主要目录及作用

    Linux系统主要目录及作用 /bin 一些基础命令   /etc 系统或软件的配置文件   /boost 内核相关和启动相关的文件   /dev 存放着各种设备文件   /home 用户相关的目录 ...

  5. Linux 下各个目录的作用及内容

    Linux 下各个目录的作用及内容 在 Linux 下,我们看到的是文件夹(目录): 在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱.Linux 面世不久后,对 ...

  6. linux makefile 只能使用Tab键进行文本缩进

    在编写完linux Makefile后,在控制台输入make命令编译文件时报错,错误信息:"Makefile:13:*** 遗漏分隔符".查看Makefile文件内容,没有发现问题 ...

  7. linux系统/var目录的作用

    linux系统/var目录的作用 一.总结 一句话总结: 1.如果/usr是安装时会占用较大硬盘容量目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录. 2.因为var目录主要针对常态性变动 ...

  8. Linux /dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解和Linux系统各个目录的作用 标签: linuxtcpfunctionclassfirefoxtimer 2012-01-11 23:08 45517人阅读 评论(2) ...

  9. linux各文件夹的作用

    linux各文件夹的作用 linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 ...

最新文章

  1. AI 不可以作为专利认证发明人,“因为它不是人”
  2. QIIME 2教程. 31名词Glossary(2021.2)
  3. mysql的proxy机制_MySQL Proxy工作机制浅析
  4. nginx-lua-openresty-graphicsmagick 下载远程图片,本地缩图红缓存加水印
  5. 微信生成带参数的二维码,合成海报,扫码后推送小程序?
  6. Apache Kylin权威指南1.3 Apache Kylin的工作原理
  7. java事件大全_Java sctipt常用事件汇总介绍
  8. lambda表达式对list排序
  9. 在武汉火车站转车需要出现吗_武汉打造40分钟“高铁中转站” 无需出站可换乘...
  10. 从零点亮一个led灯
  11. 重定向解决国外服务器与国内域名备案的问题
  12. 西门子——好用的通讯仿真通讯工具NetToPLCsim
  13. [32期] 想学PHP来兄弟连是正确的选择 初识兄弟连三周
  14. 【php】php开发的前期准备
  15. 反骨之Java是如何解决并发中的可见性问题的
  16. 《我想进大厂》之kafka夺命连环11问
  17. Dubbo Admin部署(Dubbo 2.7.X)
  18. 2ASK和2FSK调制解调仿真
  19. Three.js加载.stl格式模型
  20. c语言中 判断素数的编程,c语言如何判断素数?

热门文章

  1. 【文本分类】ACT: an Attentive Convolutional Transformer for Efficient Text Classification
  2. node开通阿里云短信验证服务,代码演示 超级详细
  3. 【Python】ValueError:Sample larger than population or is negative的原因
  4. 华为交换机dhcp功能怎么配置
  5. 机器人扫地机哪个牌子好?
  6. 天正启动时加载那些lisp_怎么在启动CAD时自动加载Lisp的工具及插件
  7. java 字符串 压缩_用JAVA实现字符串压缩算法
  8. word 如何任意调整图片的大小
  9. oracle hit ratio负数,5.Library Hit %
  10. Matlab强化学习——部署策略