c - 隐式声明警告 : What are the built-in functions?

标签 c gcc standard-library gcc-warning

提问界面标记了许多“可能已经有您的答案的问题”,但我已尝试进行尽职调查以检查是否有任何人在问我在这里的确切内容。如果这是重复的,我深表歉意。

假设我有以下不正确的程序:

extern void undefined_function(void);
int main(int argc, char **argv)
{
    undefined_function();
    undeclared_function();
    exit(0);
}

用 gcc 编译得到:

$ gcc warnings.c 
warnings.c: In function ‘main’:
warnings.c:6:2: warning: incompatible implicit declaration of built-in function ‘exit’ [enabled by default]
/tmp/ccVzjkvX.o: In function `main':
warnings.c:(.text+0x15): undefined reference to `undefined_function'
warnings.c:(.text+0x1f): undefined reference to `undeclared_function'
collect2: ld returned 1 exit status
$ 

我知道为什么会发出这些警告,以及如何纠正它们 - 这不是我的问题。

从输出中可以明显看出,gcc 将 exit() 与其他未定义/未声明的函数区别对待,因为它认为它是“内置函数”

对于给定的 gcc,我如何判断 gcc 认为是“内置函数”的函数列表是什么? 它正是 c 标准库函数的列表还是其他什么?

我考虑过做 nm libc.so,但是在我的 Ubuntu VM 上,这个 glibc 似乎被剥离了,所以在这方面没有有用的信息:

$ nm /lib/x86_64-linux-gnu/libc.so.6
nm: /lib/x86_64-linux-gnu/libc.so.6: no symbols
$ 

最佳答案

这个列表很长,而且非常特定于平台。 C 标准库中的许多(但绝不是全部)函数(有时)被视为内置函数。但也有大量与特定处理器指令和其他硬件功能相关的内置函数。它们记录在从 here; 链接的各个页面中特别是,参见 here, here, here, here , 和 here.

关于c - 隐式声明警告 : What are the built-in functions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19986247/

相关文章:

set - 知道一个集合有多少个元素?

java - 输入不匹配异常错误

c - "Tournament"的更好算法

c - Select() 阻塞标准输入,不会超时

c++ - 如何制作一个非空终止的 c 字符串?

c - 这些不同的 gcc 链接选项如何改变最终的可执行文件?

c - 用 int 乘以并添加到 C 中的 int 数组的最快方法?

c - C中的结构问题

c++ - gcc 支持 cbegin 和 cend 方法

python - 获取元组或列表的(乘法)积?