问题标签 [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 投票
0 回答
206 浏览

c - 在 C 代码中重构类型的工具

我正在寻找一种可以在 C 代码中重构类型(!)的工具。

我有一个复杂且相对较大的代码库,我们决定从内置整数类型切换到具有显式宽度的类型。就像将“ unsigned int ”的每个实例更改为“ uint32_t ”等。

我知道有很多工具可以重构例如名称,但我所知道的没有一个可以完全重构类型。例如,Visual Assist 可能能够将“long”重构为单个标记,但不能重构“unsigned long”。

0 投票
3 回答
1038 浏览

c++ - 是否有一种可移植的方式来了解 uintptr_t 是否在 stdint.h 中定义?

序言:我想将指针转换为整数类型,例如检查对齐。uintptr_t似乎是正确的类型,但它只在 C 中得到保证,而不是在 C++(或 C++11)中

对于以下代码:

2个问题:

  • 是否有一个神奇且有保证的词可以在我放置的地方使用I_WONDER_IF_UINTPR_T_IS_DEFINED
  • 我应该使用unsigned long并忘记它吗?

生成的程序集(当 uintptr_t 可用时):http: //goo.gl/4feUNK

注 1:我知道在 C++11 中我应该使用alignof它来代替sizeof
注 2:我知道这个讨论:<cstdint> vs <stdint.h>

0 投票
1 回答
265 浏览

c - 什么是 int32_t , uint16_t .... 在 stdint.h

int32_t 和 uint16_t 指的是什么?

它们是什么:宏,数据类型......

我们可以在哪里使用它们?

0 投票
1 回答
911 浏览

windows - 如何使用 MSVC 2008 在 Windows 上使用 qtwebkit 构建 Qt5 - leveldb 找不到 stdint.h

在 Windows 7 x64 机器上:

所以我的 qt5vars.cmd 是:

通过该设置,从上面的 qt5vars.cmd 提示符中,我将 Qt 配置为:

配置 -prefix %CD%\qtbase -developer-build -opensource -opengl desktop -nomake 测试 -no-compile-examples -skip qtwebkit-examples -icu -plugin-sql-sqlite -platform win32-msvc2008 -confirm-license

然后跑了nmake。我收到一堆 leveldb 找不到 stdint.h 的错误:

中有一个 stdint.h C:\Qt\qt540\qtwebkit\Source\ThirdParty\leveldb\port\win,但是将该文件或我修改后的 stdint.h 复制到leveldb\dbleveldb\include\leveldb没有什么区别 - 我在构建 Qt 时遇到了同样的错误。

我需要做什么才能用 Qt 构建 qtwebkit,或者至少解决这个 leveldb sdtint.h 问题?

0 投票
1 回答
2126 浏览

c - 在头文件中包含 stdint.h 会中断使用 clock_gettime() 进行编译

我的 C 文件使用clock_gettime(). 为此,它包括<time.h>并定义_POSIX_C_SOURCEto (200112L),根据手册页:

我编译并链接了以下选项:

, 并PROJ_SETTINGS_INC设置为包含设置的 h 文件。

到目前为止,没有问题。

现在我修改我的设置文件并使用uint16_t,因此我将其包含<stdint.h>在设置 h 文件中。

编译器现在抱怨这clock_gettime()是一个隐式声明。

如果我将我的设置文件改回使用int而不是uint16_t,并将包含删除为<stdint.h>,则再次编译。

为什么<stdint.h>在我的设置中包含 h 文件会中断编译clock_gettime()

我最好的猜测是stdint重新定义了POSIX定义,但这对我来说没有意义,因为该-include指令的工作方式就像在源代码的第一行中完成了包含一样。


这是一个例子(根据 John Bollinger 的回答,我开始明白出了什么问题,但我想我还是会写这个)。

酒吧.h:

foo.c

构建:

奇怪的是,这给出了一个有用的警告。在我的原始应用程序中,我只得到了隐式声明错误。

0 投票
1 回答
91 浏览

c - 根据用户输入声明特定宽度变量的最佳方式

我有一个如下所示的代码。这里的代码是如果word_size = 64. 以类似的方式,我也需要 32 和 16。我找不到encrypt为所有尺寸重用相同功能的方法。此外,我还需要根据word_size声明变量,即。使用uint_16or or uint_32oruint_64取决于 word_size。在这种情况下,你能帮我写一个可重用的代码吗?

如果需要,我可以提供更多信息。

0 投票
1 回答
470 浏览

c - 如何从 int32_t 中提取字节块并使用 c 将其存储在 int16_t 或 int8_t 中?

如果我有,例如:

我想将两个最重要的字节存储在int8_t

或 4 个最重要的字节int16_t

我怎样才能做到这一点?

0 投票
0 回答
464 浏览

c++ - 为什么 GCC 只定义 __INT8_MAX__ 而不是 __INT8_MIN__?

GCC 的预定义宏包括__INT8_MAX__但不包括__INT8_MIN__.

INT8_MINstdint.h用定义(-__INT8_MAX - 1)

GCC 是否假设系统是二进制补码?我认为这(INT8_MAX +1)是一种更好的定义方式,INT8_MIN因为它可以在 1 的补码系统和 2 的补码系统中工作,最好的是 compiler-provided __INT8_MIN__

为什么 gcc 不提供__INT8_MIN__

我实际上没有任何不使用二进制补码的系统,所以我使用它没有任何问题,但我只是好奇。

0 投票
3 回答
21367 浏览

c++ - 哪个 C++ 标准头文件定义了 SIZE_MAX?

我正在研究一个恰好SIZE_MAX在几个地方使用的现有 C++ 代码库。我做了一些重构,现在SIZE_MAX没有在其中一个模块中定义。当Travis-CI试图在 Linux 上构建项目时,就会出现这个问题。在我重构之前它工作得很好,但是很难跟踪包含了哪些确切的头文件。

为了在本地复制问题,我安装了一个带有默认 gcc 的 Ubuntu VM,并且能够重现它。以下是相关来源:

命令行很简单:

错误是:

系统信息:

我尝试过包括cstdint, stdint.h, limits.h, inttypes.h, stdio.h, stdlib.h, 可能还有其他一些,但我不知道我需要哪个特定的头文件SIZE_MAX

重要的是要注意SIZE_MAX,在我进行一些更改之前,我正在处理的程序编译得很好,并在各个地方使用过。我所做的更改导致它在使用它的一个 .cpp源文件中变得未定义(其他的仍然很好)。所以在我的系统上存在一些正确定义的头文件。

0 投票
1 回答
1004 浏览

c++ - 在 android NDK 上检测 stdint.h 和 C++11

我发现某处可以使用以下行检测 C++11:

我正在使用它来有条件地定义固定宽度类型,例如 int32_t 或 uchar16_t 等...

问题是在使用 android NDK 时,__cplusplus定义为1. 是否有更便携的方法来检测 C++11 和 stdint.h 的存在以避免重新定义?

谢谢你。