为什么Windows和Linux的标准库函数名称不同?

2024-04-18

我正在将 Windows 库移植到 Android(使用 GNU 标准 C++ 库选项 libstdc++-v3),VC 和 GNU 库之间似乎存在许多命名差异,例如:

  • _stricmp叫做strcasecmp instead
  • _unlink叫做unlink
  • _scalb叫做scalbn
  • _finite叫做isfinite
  • _isnan叫做isnan
  • _itoa and itoaGNU C++ 中似乎不存在
  • atoi确实存在,但不存在atoi64

VC 和 GNU 库的文档暗示它们实现了“ISO”C++,例如,我可以从 VC2008 中得到一些关于不使用“ISO C++”名称的警告,例如:“警告 C4996: 'itoa':该项目的 POSIX 名称已被弃用。而是使用符合 ISO C++ 的名称:_itoa。”同样,GNU 手册说“GNU 标准 C++ 库 v3 是一个正在进行的项目,旨在实现 ISO 14882 标准 C++ 库”。

那么这些库是如何以这些不同的名称结束的呢?我怎样才能知道哪些名字更“标准”?

还有,有没有一个indexlibstdc++-v3 的任何地方,即库中所有函数的简单列表?我只能找到一个manual http://gcc.gnu.org/onlinedocs/libstdc++/和“源文档 http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/”,它似乎没有提供功能列表。


这与C++标准库关系不大。它与 C99 和 POSIX 有更多关系。

  • strcasecmp是 libstdc++ 恰好实现的 POSIX 函数。 msvcrt 通常与 POSIX 保持一定距离。
  • unlink类似——它是一个 POSIX 函数。
  • scalbn是 C99 标准中函数的名称。 MSVC 不支持 C99。然而,scalbn是 C++11 的一部分,所以我希望它最终会出现在 msvcrt 中。
  • isfinite and isnan都是C99。
  • itoa既不是 C99 也不是 POSIX。这是一种只在夜间出现的奇怪野兽。

我还将指出其他几个人指出的内容:从技术上讲,在标准库中为实际上非标准的任何函数添加下划线前缀是更正确的。这就是 msvcrt 中下划线泛滥的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么Windows和Linux的标准库函数名称不同? 的相关文章

随机推荐

  • Windows Phone 中的 Azure Active Directory 身份验证失败

    我正在遵循 Windows Phone 身份验证教程将身份验证添加到您的移动服务应用程序 http azure microsoft com en us documentation articles mobile services windo
  • C Typedef 和 struct 问题

    这两种声明有什么区别 哪种声明优先于另一种 typedef struct IOPORT GPIO TypeDef port u16 pin IOPORT typedef struct GPIO TypeDef port u16 pin IO
  • 在android中将json对象发送到HTTP服务器

    我使用以下代码将 JSON 对象发送到 HTTP 服务器 最主要的是我还必须发送布尔值 public void getServerData throws JSONException ClientProtocolException IOExc
  • 谷歌地图上 100k 或更多标记,无需聚类

    我有一些通过安装在汽车上的 GPS 设备收集的数据 所以我拥有的数据基本上都位于街道 道路上 周围 每个坐标都有一些值 数据的格式是这样的 lat long value 12 979155 77 644925 6 12 97916833 7
  • PostgreSQL 列名区分大小写吗?

    我有一个数据库表 persons在另一个团队传下来的 Postgres 中 有一个列名 first Name 现在我尝试使用 PG Commander 来查询这个表的这个列名 select from persons where first
  • 使用 javascript 匹配电话国家/地区代码

    我正在尝试实现一个 JavaScript 函数来替换电话号码的国家 地区代码部分 输入是 90 533 333 33 33 我想用javascript替换 90部分 我尝试编写正则表达式 但没有成功 a z s 编辑 最终解决方案 ddlC
  • 删除媒体样式表上的 a:hover?

    如何删除媒体查询 CSS 文件中主 CSS 文件中指定的样式条目 例如 我想删除 a hover 条目以在触摸设备上使用 主要 css a hover color 999999 background 111111 如何在 media css
  • 日期未保存在mysql数据库中

    我在 MySQL 数据库中保存日期时遇到问题 测试一切 我正在尝试将 2010 01 01 例如 保存在 MySQL 数据库中 首先 我将 MySQL 字段设置为最新 这不起作用 但是当我将字段设置为字符串类型时 它确实将日期保存在数据库中
  • gulp compass 创建一个不需要的文件而不是仅使用流

    这是我的应用程序指南针吞咽任务 var compass require gulp compass var autoprefixer require gulp autoprefixer gulp task app compass functi
  • 更改不同值的单元格颜色 - Gridview

    我需要区分两个连续的单元格 一行中的每个值 如果它们具有不同的值 则在将值绑定到网格视图时 因此 如果在第 1 行中我有单元格 ABC 在第 2 行中我有单元格 CBA 我需要用不同的颜色为每个单元格着色 最好的方法是什么 这称为条件格式
  • 什么是渐进增强?

    Jeff 在谈论使用 JQuery 编写 stackoverflow 时提到了 渐进增强 的概念 经过快速谷歌之后 我发现了一些关于它的高层讨论 谁能推荐一个作为程序员开始的好地方 具体来说 我一直在用 PHP 编写 Web 应用程序 并希
  • 如何解锁 Eclipse 4.2 (Juno) 中的工具栏

    我从 Eclipse Indigo 3 7 迁移到 Juno 4 2 在 Juno 中 所有工具栏似乎都被永久锁定 有没有办法解锁它们以便可以移动或重新排列它们 尝试 Windows 首选项 外观 看打印 然后在搜索框中输入 主题 或转到
  • 使用 R 代码的移动平均线

    我需要 R 代码的第一部分是 编写一个执行以下操作的 R 函数 给定一个序列 xN x1 x2 xN of N 观察 该函数返回一个移动平均值向量 其中计算每个平均值 k 个连续观察值 将函数命名为 ma 其参数为 向量 xN 和 k 到目
  • 基于文件类型的应用程序选择对话框

    我正在尝试创建一个对话框 它将显示打开给定文件类型的可用应用程序列表 我一直在 stackoverflow 上查看一些解决相同问题的问题 但由于缺乏答案而迷失了方向 我特别关注这个问题 在 Android 中 如何根据文件类型显示应用程序选
  • 使用 jquery post for mvc 3 在部署时不起作用

    所以我有这个 MVC 3 应用程序 它有一个下拉列表 我用它通过 jquery 填充 div 它在本地工作正常 但当我将其部署到服务器时 它重定向不正确 这是我的 jquery ddlCategoryMain change function
  • 将 mm/dd/yyyy 转换为 yyyymmdd (VB.NET)

    有什么方法可以将日期格式 dd mm yyyy 转换为 yyyymmdd 格式吗 例如从 25 07 2011 到 20110725 在 VB NET 中 日期本身不have固有的格式 您可以将字符串解析为DateTime通过解析它dd M
  • 如何在bash函数中显示数字到小数点后两位

    我应该如何获取以百分之秒为单位的数字并将其以秒为单位显示到小数点后两位 我不确定遵循 dTime 函数的伪代码 但我认为您会得到我的目标 function time echo date N 10000000 function dTime e
  • 用于存储用户位置历史记录的 MongoDB 架构

    我想使用 MongoDB 来存储我的用户位置历史记录 当然要征得他们的同意 我看到以下三个选项 为所有用户创建一个位置集合 每个文档都有一个 userId 字段和一个时间字段 这两个字段都将被索引 该集合中的行数可能会增长到超过 1 亿行
  • 绑定到 Date() 对象时如何格式化 input[time] 的值

    我将变量绑定到时间类型的输入字段 但显示的格式错误 它显示时间如下 08 54 30 088我真正需要的是这样的格式 08 54 我尝试使用过滤器设置输入字段的值 value datetime date date HH mm 但我的编辑说我
  • 为什么Windows和Linux的标准库函数名称不同?

    我正在将 Windows 库移植到 Android 使用 GNU 标准 C 库选项 libstdc v3 VC 和 GNU 库之间似乎存在许多命名差异 例如 stricmp叫做strcasecmp instead unlink叫做unlin