为什么那么许多图书馆确定自己的固定宽整数?

0

的问题

由于至少C++11我们可爱的固定宽整数,例如在C++'s <cstdint> 或C的 <stdint.h> 开箱(例如 std::uint32_t, std::int8_t),所以有或没有的 std:: 在他们面前,甚至作为宏最小宽度(INT16_C, UINT32_C 等等)。

然而,我们必须做处理与图书馆的每一天,确定自己的固定宽整数和你可能已经看到为例 sf::Int32, quint32, boost::uint32_t, Ogre::uint32, ImS32我可以继续下去如果你想要我。 你也知道,一对夫妇更可能。

有时,这些类型定义(也常常宏定义)可能导致冲突,例如当你想通过一个 std 固定宽整数的一个函数从图书馆预期的固定宽整数完全相同的宽度,但定义方式不同。

点的固定宽整数是它们具有固定的尺寸,而这正是我们需要在许多情况下,你知道。 那么,为什么所有的这些图书馆去和typedef完全相同的整数,我们已经在C++标准? 这些额外的限定,有时令人困惑、冗余和可能入侵你的代码,这是非常不好的事情。 如果他们没有宽度和符号规范他们的承诺,他们至少罪原则的少惊讶,那么他们的观点,我在此请求你?

c++ fixed-width integer
2021-11-23 14:45:24
1

最好的答案

5

为什么那么许多图书馆确定自己的固定宽整数?

可能对于一些的原因如下:

  • 他们开始之前,C++11或C11(例: GTK, ,图书馆内部的 海湾合作委员会, 提高, FLTK, GTKmm, Jsoncpp, , Dlib, 该版本, Wt)

  • 他们希望有可读的编码,在他们自己的 namespaceclass (具有他们自己的名字空间,就像脱不会,可以改善的可读性以及编写代码)。

  • 他们是建立时可配置(例如与 GNU autoconf).

  • 他们想要可编译与老C++编译器(例如某些C++03之一)

  • 他们想要 截可编译 便宜的嵌入式 微控制器 的编译是不是一个完整C++11编译器。

  • 他们可能有的通用代码(或 template-s,例如在 Dlib)也许是支持 任意精算术 (或bignums)也许是使用 GMPlib.

  • 他们要以某种方式证明与 Frama-C做178C 认证(用于嵌入式的关键软件系统)

  • 他们是处理具体的(例如 asmjit 其生成机器码在运行时在一 结构)

  • 他们可能会接口的具体硬件或编程语言(Tensorflow, usb类, Cuda).

  • 他们想要可以使用从 PythonGNU诡计.

  • 他们可以操作系统的具体。

  • 他们添加一些额外的运行检查,例如对司通过0(或其他不确定的行为)或者溢出(C++标准不需要,对于绩效或历史原因)

  • 他们的目的可以 容易地 使用从 机器生成的 C++代码(例如 RefPerSys, 这些代码,...)

  • 他们被设计为可调用从C码(如 libgccjit).

  • 等等...寻求其他良好的原因是留给读者。

2021-11-24 08:35:11

好吧,你赢了。 我会停止滚,我的眼睛每次我看到一个。
nada

我有这么多码相匹配的第一点也不好笑。
user4581301

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................