如何在 C 中使用固定大小的整数?

发布于 2024-08-03 02:37:33 字数 301 浏览 8 评论 0原文

我正在尝试编译一些包含以下声明的代码,因为我希望 count 成为一个有保证的 32 位整数:

int32 count;

但是,这会在编译时导致错误:

test.c:21: error: ‘int32’ undeclared (first use in this function)

是否有特定的我需要为 GCC 设置编译时选项,还是可以解决此问题的 #include 指令?如何在 Ubuntu 上使用 GCC 声明固定位宽的整数?

I'm trying to compile some code which contains the following declaration, because I would like count to be a guaranteed 32-bit integer:

int32 count;

However, this results in an error at compile time:

test.c:21: error: ‘int32’ undeclared (first use in this function)

Is there a particular compile-time option that I need to set for GCC, or an #include directive that will solve this? How can declare an integer of a fixed bit width on Ubuntu with GCC?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我不吻晚风 2024-08-10 02:37:33

int32 类型不是标准 C - 标准等效项是 #include 并使用 int32_t

然而,作为一个 POSIX 系统,在 Ubuntu 上,普通的 int 是(至少)32 位,所以你可以直接使用它。

The int32 type isn't standard C - the standard equivalent is to #include <stdint.h> and use int32_t.

However, as a POSIX system, on Ubuntu plain int is (at least) 32 bit so you could just use that.

累赘 2024-08-10 02:37:33

“int”的大小取决于您使用的编译器。对于相同的目标体系结构,不同的编译器可以具有不同的“int”大小。这取决于他们如何利用目标功能。例如,在 Windows 上运行的 Turbo C 的“int”大小为 2 个字节(它是 DOS 可执行文件)。而 Visual C 将“int”的大小指定为 32(win32 可执行文件)。

一般来说,“int”的大小由目标体系结构中单词的大小决定。字的大小反映为
1.算术运算的处理量。
2. 通用寄存器的大小。
3. 用于指定位置的地址大小。

但是,在您的情况下,您错误地使用了关键字“int32”作为数据类型。检查目标机器并相应地修复所使用的关键字。

Size of 'int' depends on the compiler you use. For same target architecture different compilers can have different sizes for 'int'. It depends on how they are utilizing the target features. For example, Turbo C running on windows has 'int' size as 2 bytes (its a DOS executable). While Visual C gives the size of 'int' as 32 (win32 executable).

In general, size of 'int' is determined by the size of word as per the target architecture. Size of word is reflected by
1. Processing size of arithmetic operations.
2. Size of general purpose registers.
3. Size of the address used to designate a location.

However in your case you are wrongly using a keyword 'int32' for a data type. Check the target machine and fix up the keyword used accordingly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文