![]() |
1
4
C有一些关键字,但没有内置函数。你使用的每个函数都来自其他库。即使没有标准库,也可以使用
|
![]() |
2
1
这取决于你所说的“语言的一部分”是什么意思。有一些规范定义了C标准库应该提供什么,因此在这方面
然而,C编译器不会生成实现这些函数的代码——它们应该在某种库中提供。大多数C编译器都知道库在哪里/什么,并将被配置为自动链接它。如果你不想使用标准库,你几乎可以肯定地告诉编译器/链接器不要这样做。有时有充分的理由。
尽管有标准库的规范,但语言语法本身与库几乎没有耦合。例如,在Java中,如果你添加一个
在C中没有真正等效的过程——C编译器可以在完全不知道可能有哪些函数可用的情况下生成代码。这些函数确实需要在运行时之前可用,但这实际上是链接器的工作,而不是编译器的工作。
然而,
我收到一个警告:
即使我使用
我想“内置函数”的概念并不完全明确。 |
![]() |
3
1
所有C标准库函数都内置在语言中,它们是C标准定义的C语言的一部分。C实现(特别是编译器)可以将这些函数实现为由编译器实现的内置函数或由链接器链接的对象模块。C标准在很大程度上将说明C程序必须如何行为的规则与关于C程序必须怎样实现的规则分开。 从C程序必须如何表现的意义上讲,内置函数和链接函数之间没有区别:函数的行为是相同的,并且无法描述这两个实现之间可观察到的差异。
编译器通常使用内置实现和链接实现的组合。例如,在
更复杂的函数通常是通过调用编译后链接到程序中的外部函数来实现的。即使有许多这样的情况,编译器也可以识别特殊情况并提供对替代函数的调用(
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 5 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 5 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 6 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 6 月前 |