Git 项目的源码禁止开发者使用 C 标准库中的某些函数,原因是这些函数太容易被误用,就算使用得当也很容易出问题。因此 Git 的源码增加了一个 banned.h 的头函数,一旦你使用了这些被禁用的函数,将在编译时报错。

这些函数包括:

#ifndef BANNED_H
#define BANNED_H/** This header lists functions that have been banned from our code base,* because they're too easy to misuse (and even if used correctly,* complicate audits). Including this header turns them into compile-time* errors.*/#define BANNED(func) sorry_##func##_is_a_banned_function#undef strcpy
#define strcpy(x,y) BANNED(strcpy)
#undef strcat
#define strcat(x,y) BANNED(strcat)
#undef strncpy
#define strncpy(x,y,n) BANNED(strncpy)
#undef strncat
#define strncat(x,y,n) BANNED(strncat)#undef sprintf
#undef vsprintf
#ifdef HAVE_VARIADIC_MACROS
#define sprintf(...) BANNED(sprintf)
#define vsprintf(...) BANNED(vsprintf)
#else
#define sprintf(buf,fmt,arg) BANNED(sprintf)
#define vsprintf(buf,fmt,arg) BANNED(sprintf)
#endif#endif /* BANNED_H */

banned.h 源码  https://gitee.com/mirrors/git/blob/master/banned.h

Git 源码禁止使用 C 标准库中容易被错用的函数相关推荐

  1. c语言的erase函数,C++ STL标准库中sort,erase,remove_if函数的使用

    本篇介绍C++ STL中常用的几个函数 1.std::sort 1.1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序. 1.2.sort函数的 ...

  2. 整理网上资料---C标准库值篇二 :标准库源码下载地址、标准库手册下载地址

    C标准库源码及手册.zip,包括: http://download.csdn.net/detail/yangzhao0001/9057823 C标准库函数集(头文件索引)------手册-AH.pdf ...

  3. 聊聊C++11标准库中堆(heap)算法的源码

    STL中支持堆操作,对外暴露了std::make_heap,std::push_heap,std::pop_heap,std::sort_heap,std::is_heap,std::is_heap_ ...

  4. 【转】Visual Studio团队资源管理器 Git 源码管理工具简单入门

    1.1 环境 Visual Studio + GitLab (其他版本同理) 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Me ...

  5. Centos7 Git源码安装

    Git简介 有关于git的详细介绍和使用这里就不多说了,有兴趣看的话可以访问上一篇文章文章yum安装git 实验环境 系统版本:centos7x3.10.0-514.el7.x86_64 Git版本: ...

  6. php备份漏洞源码,原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更

    原标题:原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更 前言 2020年好,各位 PHPer 们,很久没有写原创文章了,心里实在过意不去,决定写点文字,"从心" ...

  7. 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的

    一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled  GD Version bundled (2.0.34 compatible)  GI ...

  8. jenkins 拉取git源码超时

    由于项目使用自购服务器搭建的 gitea 管理源码,服务器带宽较小.试了几次后都没发现是构建任务的时间不足,原因就是10分钟也挺久的,谁会去等10分钟噻. 最后第二天再看之前构建的任务,发现报错如下 ...

  9. docker源码编译 linux_oracle linux 6 docker 安装(包括编译git源码)

    在安装时请确保可以联网.安装步骤如下: 1. 更新班级yum配置(参见: http://public-yum.oracle.com/getting-started.html): # cd /etc/y ...

最新文章

  1. VTK:模型之Delaunay3D
  2. arcgis-online-python-scripts
  3. Linux命令:mkdir
  4. aws lambda使用_使用AWS Lambda的CloudWatch事件通知
  5. java的创建管理员对象_java--更改管理员密码,请列位帮忙看看有没有更好的实现方式...
  6. 考前建议:好好看一下 《网络工程师考试案例动手实验营》附录A
  7. 设计思路工作笔记-使用当天时间戳的差值读取实时数据绕过错误数据
  8. java11和13_Java1113
  9. npm查找全局安装包命令
  10. SpringBoot06 统一响应格式
  11. 1500个常用计算机单词
  12. C#技术分享【PDF转换成图片——10种方案】(2013-07-25重新整理)
  13. Android Metro风格的Launcher开发系列第三篇
  14. ASP,PHP,ASPX生成静态页大全
  15. mysql explain row_MySQL explain详解
  16. VMware Convert 使用
  17. 每日力扣——95. 提莫攻击
  18. 400分理科学计算机,2021高考400分左右的理科大学有哪些
  19. 黄瓜西红柿为何不能同吃?(图)
  20. Javascript 上传图片 显示缩略图

热门文章

  1. mybatis 遍历map_Mybatis 缓存系统源码解析
  2. android工控软件,基于Android的工业控制监控软件的设计和开发
  3. php oauth 扩展,PHP扩展之Web服务(一)——OAuth
  4. 智能水位检测系统proteus_浅谈智能视觉检测系统的6大优点
  5. 合成孔径成像算法与实现_MIMO OFDM宽幅SAR成像仿真与图像融合技术
  6. UI设计灵感|插画在引导页中的应用
  7. UI实用素材|购物车界面不同设计,可临摹的好模板
  8. java 狗带风波_养狗风波作文
  9. mysql 删除数据_3.MySQL数据库创建、查询、删除
  10. python编程入门到实践笔记-python基础(《Python编程:从入门到实践》读书笔记)...