如何在 C 中使用固定大小的整数?
我正在尝试编译一些包含以下声明的代码,因为我希望 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
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 useint32_t
.However, as a POSIX system, on Ubuntu plain
int
is (at least) 32 bit so you could just use that.“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.