问题标签 [size-t]

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 投票
8 回答
235068 浏览

c++ - unsigned int 与 size_t

我注意到现代 C 和 C++ 代码似乎在几乎所有地方都使用size_t而不是int/ ——从 C 字符串函数的参数到 STL。unsigned int我很好奇这样做的原因及其带来的好处。

0 投票
10 回答
17441 浏览

c++ - size_t 类型变量的跨平台格式字符串?

在跨平台的 c/c++ 项目(Win32、Linux、OSX)上,我需要使用 *printf 函数来打印一些 size_t 类型的变量。在某些环境中 size_t 是 8 个字节,而在其他环境中是 4 个。在 glibc 上我有 %zd,在 Win32 上我可以使用%Id。有没有一种优雅的方法来处理这个?

0 投票
6 回答
8840 浏览

c - size_t 加法溢出

我喜欢为 VS.NET 和 GCC 提供免费的代码警告,并且我喜欢准备好我的 64 位代码。

今天我写了一个小模块,它处理内存缓冲区并通过文件样式接口提供对数据的访问(例如,您可以读取字节、写入字节、四处寻找等)。

作为当前读取位置和大小的数据类型,我使用了 size_t,因为这似乎是最自然的选择。我绕过警告,它也应该在 64 位下工作。

以防万一:我的结构如下所示:

的符号size_t似乎在实践中没有定义。谷歌代码搜索证明了这一点。

现在我处于两难境地:我想检查是否有size_t溢出,因为我必须处理用户提供的数据,而第三方库将使用我的代码。但是,对于溢出检查,我必须知道符号。它在实施中产生了巨大的差异。

那么 - 我到底应该如何以独立于平台和编译器的方式编写这样的代码?

我可以size_t在运行或编译时检查签名吗?那将解决我的问题。或者,也许size_t一开始就不是最好的主意。

有任何想法吗?

编辑:我正在寻找 C 语言的解决方案!

0 投票
8 回答
32389 浏览

c++ - “std::size_t”在 C++ 中有意义吗?

在我继承的一些代码中,我看到经常使用size_t命名std空间限定符。例如:

当然,它编译并运行良好。但这对我来说似乎是一种不好的做法(也许是从 C 继承而来的?)。

这不是size_t内置在 C++ 中并因此位于全局命名空间中吗?size_t是否需要在 C++中使用头文件?

问这个问题的另一种方法是,以下程序(没有包含)是否可以在所有 C++ 编译器上编译

0 投票
4 回答
1657 浏览

visual-c++ - 64位可移植性问题

所有这一切都源于我在尝试以下行时戳编译器警告消息(C4267):

size()返回一个 size_t,虽然 typedef'd 为 unsigned int,但实际上不是 unsigned int。我认为这与 64 位可移植性问题有关,但是有人可以为我解释一下吗?(我不只是想禁用 64 位警告。)

0 投票
10 回答
9790 浏览

c - C:为什么 size_t 不是 C 关键字?

sizeof是一个 C关键字。它以名为 的类型返回大小size_t。但是,size_t不是关键字,而是主要在stddef.h可能还有其他 C 标准头文件中定义。

考虑一个场景,您想要创建一个包含任何 C 标准头文件或库的 C 程序。(例如,如果您正在创建 OS 内核。)现在,在这样的代码中,sizeof可以使用(它是 C 关键字,因此它是语言的一部分),但它返回的类型 ( size_t) 不是可用的!

这不是表示 C 标准规范中存在某种问题吗?你能澄清一下吗?

0 投票
4 回答
146743 浏览

c - 32 位与各种 64 位数据模型的 sizeof(size_t) 是多少?

在 64 位系统上,sizeof(unsigned long)取决于系统实现的数据模型,例如 LLP64(Windows)上是 4 个字节,LP64(Linux 等)上是 8 个字节。sizeof(size_t)应该是什么?它是否像数据模型一样因数据模型而异sizeof(long)?如果是这样,怎么做?


参考:

维基百科上的 64 位数据模型

0 投票
6 回答
33683 浏览

c++ - 在 Ubuntu 8.1 上 g++-4.1 或其他人无法找到 size_t

我以前也发生过这种情况,但我不记得我是如何解决的。

我无法在新安装的 Ubuntu 上编译一些程序……我的标题有问题。

我试过 g++-4.1 和 4.3 无济于事。

文件...

types.h 肯定在路径中,并且正在被拾取。我通过更改文件名进行了验证,并得到了一个错误,它丢失了......

有没有人有任何想法...?我真的很感激你的帮助......

0 投票
2 回答
459 浏览

c++ - 关于 size_t 的问题

如果您查看我的帖子历史记录,您会看到我正在尝试为我正在研究的语言开发解释器。我想使用size_t使用两个不同的代码,但它们都没有返回任何内容。

这是我正在尝试的帖子:http ://stackoverflow.com/questions/1215688/read-something-after-a-word-in-c

当我尝试使用我正在测试的文件时,它什么也没给我。这是示例文件(仅是我尝试用我的语言开发的打印功能):

但是请记住,这就像 Python 中的 print,用户在引号中输入的内容(“”)是必须打印给所有人的,记住用户可以选择引号中的内容,然后不要输入类似 a简单的 cout,发布一些读取引号内内容的内容并将其打印给所有人。但这是执行此操作的两个测试代码,但它们都没有向我返回任何内容:

第二:

这是控制台中打印的内容:

就像我说的那样,它什么也没打印出来。 请参阅我在 DIC 中的帖子:http ://www.dreamincode.net/forums/showtopic118026.htm

谢谢,内森·保利诺·坎波斯

0 投票
6 回答
2454 浏览

c++ - 否定 size_t(即 `-sizeof(struct foo)`))会发生什么?

我正在处理一些工作中的代码,其中包括表单的表达式

即 a 的否定,size_t当他们看到这一点时,我不清楚 C 和 C++ 标准对编译器的要求。具体来说,从这里和其他地方环顾四周,sizeof返回类型为 的无符号整数值size_t。在否定无符号整数时,我找不到指定行为的任何明确参考。有没有,如果有,是什么?

编辑:好的,所以关于无符号类型的算术有一些很好的答案,但不清楚这实际上是否如此。当这否定时,它是对无符号整数进行操作,还是转换为有符号类型并对其进行处理?从标准中期望的行为是否“想象它是相似幅度的负数,然后对无符号值应用'溢出'规则”?