问题标签 [stdint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
30438 浏览

c - C 中 ptrdiff_t 定义在哪里?

ptrdiff_tC中定义在哪里?

0 投票
3 回答
2481 浏览

c - 编译时检查 stdint.h 是否存在

我正在使用旧的嵌入式 C 代码来定义类型uint8_t, uint16_t和使用关键字 uint32_t在头文件中。typedef

为了讨论,假设文件typedefs.h包含这些定义。

在我的新 C 源代码模块中,我包含stdint.h. 我还包括其他包含typedefs.h在层次结构中的头文件。正如预期的那样,编译器抱怨多个定义的符号。

我想修改遗留文件typedefs.h,以便它只声明uint*_t类型,如果stdint.h不包含或者更好,如果uint*_t没有定义类型。

我的理解是#ifndef不能使用,因为typedef它不是预处理器指令。

那么我如何告诉编译器不要定义uint*_t它们是否已经存在(或者是否stdint.h已经包含)?

注意:如果 C 规范定义的标准包括头文件的保护定义,这将很容易。

FWIW,我正在为 ARM9 处理器使用 Green Hills 编译器 4.24。

0 投票
9 回答
6931 浏览

c - 常见架构的最快整数类型

stdint.h头缺少int_fastest_t与类型uint_fastest_t相对应的和{,u}int_fastX_t。对于整数类型的宽度无关紧要的情况,如何选择允许处理最多位且对性能的影响最小的整数类型?例如,如果使用一种简单的方法在缓冲区中搜索第一个设置位,则可能会考虑这样的循环:

自然, usingchar会导致比 . 更多的操作int。但可能会导致比在32 位系统上long long使用的开销等更昂贵的操作。int

我目前的假设是针对主流架构,使用long是最安全的选择:在 32 位系统上是 32 位,在 64 位系统上是 64 位。

0 投票
3 回答
5335 浏览

ruby-on-rails - 在 Rails 中安装 RMagick-gem 时出现问题

我整天都在研究教程,试图安装 RMagick,现在我估计已经走得很远了,但是偶然发现了一个我真的不知道如何解决的错误,也没有得到任何有用的信息。

当我尝试安装 gem 时,我收到以下消息:


我想粗体部分是重要的部分,我做了一些研究并且明白 stdint.h 是某种头文件,但我不知道如何安装它。

我还检查了 mkmf.log 文件,它为我提供了一些易于阅读的信息:

检查 Ruby 版本 >= 1.8.5... -------------------- 是


有人有想法么?

非常感谢您的帮助!

问候, 埃米尔

0 投票
2 回答
2879 浏览

c - 带有 typedef 整数的 Printf,尤其是 64 位

考虑这段代码:

这在 x86 上运行良好。在 x64 上, int64_t 实际上是 a long,而不是 a long long,并且虽然longlong long在 x64 上大小相同,但编译器会生成错误:

src/cpfs/bitmap.c:14:警告:格式“%lld”需要类型“long long int”,但参数 6 的类型为“Blkno”</p>

  1. 我怎么知道printf我正在传递 64 位类型?
  2. #define有没有比使用上述方法更好的方法来标准化用户类型的规范BLKNO_FMT
0 投票
1 回答
10357 浏览

visual-studio - Visual Studio 2010 中的 stdlib.h / stdint.h 在哪里?

我在谷歌上搜索了一下,听说虽然stdint.h旧版本的 Visual Studio 没有附带,但它应该在 Visual Studio 2010 中。

但是,我有这个项目应该使用它,但它说它找不到stdlib.hor stdint.h

为什么会这样,我该如何解决?


在 x86 Windows 7 机器上运行带有 .NET 4.0 的 Visual Studio 2010。

0 投票
2 回答
7880 浏览

c - uint32_t 和其他 stdint 类型的 atoi 或 strtoul 等价物是什么?

我正在寻找将字符串转换为stdint.h整数的标准函数,例如

0 投票
1 回答
144 浏览

c - 为什么这会导致溢出?

据我了解,由 C99 (stdint.h) 定义的 uint64_t 定义为 8 个字节(= 64 位)的长度,因此允许最大值为 2^64 - 1。但是,当我尝试以下代码片段时, uint64_t 溢出,即使它远不接近 2^64 - 1:

帮助将不胜感激。

0 投票
1 回答
196 浏览

c - INT_FAST16_MAX 不反映 MSVC 2010 中的类型大小?

C99 定义int_fast16_t为“通常最快且至少具有指定宽度的整数类型”,Microsoft 在 MSVC 2010 中将其定义为 32 位整数:

然而,微软已经设置了不反映实际基础数据类型的限制:

人们会假设该标准的意图是如下所示:

否则这会使常量完全多余?

编辑:如预期的 NetBSD 设置示例:

http://fxr.watson.org/fxr/source/arm/include/_stdint.h?im=3

0 投票
1 回答
391 浏览

xcode - #include 头文件问题上的命名空间

我将代码从 Windows 机器移植到 Mac。我正在使用带有 Xcode 3.2.5 的 OS X 10.6

我有一个名为 api.h 的头文件,其中包含以下代码:

ocip.h 包括 #include stdint.h
,它具有以下 typedef:

现在回到 api.h 我有以下课程:

ocip::uint32_t m_nMode;

编译器告诉我命名空间“ocip”中的 uint32_t 没有命名类型。

任何想法我做错了什么?