![]() |
1
45
它不会从字面上返回类型大小为t的值,因为大小本身不是具体类型,而是未指定内置类型的typedef。typedef标识符(如size_t)完全等同于它们各自的基础类型(并在编译时转换为基础类型)。如果在您的平台上将size_t定义为无符号int,那么在系统上编译时sizeof将返回无符号int。大小t只是维护可移植性的一种简便方法,如果您明确使用它的名称,那么它只需要包含在stddef.h中。 |
![]() |
2
14
C语言不需要
另外,我做了半隐式重铸
|
![]() |
3
8
C标准中的某些标题是为 独立的 环境,即适合在操作系统内核中使用。它们不定义任何函数,只定义和typedef。 它们是float.h、iso646.h、limits.h、stdarg.h、stdbool.h、stddef.h和stdint.h。 在操作系统上工作时,从 这些 标题。让它们可用使内核中的许多事情变得更容易。尤其是stdint.h将变得方便(uint32_t等人)。 |
![]() |
4
7
查找C的宿主实现和独立的C实现之间的区别。独立(C99)实现需要提供头部:
这些头根本不定义任何函数。它们定义了某种特定于编译器的语言部分(例如,
这意味着,即使在假设的内核中,您也应该期望C编译器提供这些头文件和任何底层支持函数——即使您提供了其他一切。 |
![]() |
5
4
我认为主要原因是
例如,在讨论C++标准的下一个主要修订时, Stroustrup had this to say :
|
![]() |
6
3
没有理由不包括stddef.h,即使您正在开发内核——它为您的特定编译器定义任何代码都需要的类型大小。 还要注意,几乎所有的C编译器都是自编译的。因此,sizeof运算符的实际编译器代码将使用size_t并引用与用户代码相同的stddef.h文件。 |
![]() |
7
2
|
![]() |
8
2
size of实际上是一个类型-通常是一个无符号整数。size of是一个提供类型大小的运算符。sizeof返回的类型实际上是特定于实现的,而不是C标准。它只是一个整数。 编辑: 要非常清楚,使用sizeof不需要大小类型。我想你要找的答案是——是的,不一致。然而, 没关系。 实际上,您仍然可以正确使用sizeof,而无需从头文件中定义大小。 |
![]() |
9
1
西泽特 不是必需的关键字。对于整体类型,不同的架构通常具有不同的大小。例如,64位计算机可能具有 无符号长整型 作为 西泽特 如果他们不决定 int 64位数据类型。 如果您将内置类型的sizeof设置为编译器,那么它将失去进行交叉编译的能力。 也, 西泽 更像是一个魔术编译时宏(思考C++模板),它解释了为什么它是关键字而不是定义的类型。 |
![]() |
10
1
原因很简单,因为它不是基本类型。如果查找C标准,您会发现基本类型包括
另一方面,
|
![]() |
Terio · Typescript:使用变量的值创建自定义类型 2 年前 |
![]() |
Kareem Adel · 创建函数类型(TypeScript接口) 2 年前 |
![]() |
MatÄj VondráÄek · 如何在c#方法中传递类型? 3 年前 |
![]() |
kreo · 为什么&[T]参数也接受&Vec? 7 年前 |
![]() |
Jiji · 将简单对象强制转换为简单的通用接口 7 年前 |