List of C functions

本文列举了C标准库中预定义的函数,包括数学运算、输入输出、字符串处理等核心功能。此外,还包含了一些非标准函数,为开发者提供全面的参考。

From Wikipedia, the free encyclopedia

This articlemay need to bewikifiedto meet Wikipedia'squality standards. Pleasehelpby addingrelevantinternal links, or by improving the article'slayout.(May 2009)

The predefinedfunctionsused in theC standard library, and a few of the non-standard functions, include:

assert.h

assert(macro)

complex.h ctype.h errno.h

(no functions)

float.h

(no functions)

inttypes.h iso646.h

(no functions)

limits.h

(no functions)

locale.h

localeconv

setlocale

math.h setjmp.h

longjmp, setjmp

signal.h

raise

stdarg.h

va_arg(macro)

va_copy(macro)

va_end(macro)

va_start(macro)

stddef.h

offsetof(macro)

stdio.h stdlib.h string.h time.h wchar.h wctype.h

[edit]Non-standard headers

alloc.h

farmalloc

conio.h

getch,getche, gotoxy

netdb.h

getaddrinfo

getnameinfo

Categories:C standard library|C programming language|Lists of programming languages

源文档 <http://en.wikipedia.org/wiki/List_of_C_functions>

<think>好的,用户需要查找关于程序中至少包含一个间接调用的信息,特别是映射文件中的函数列表示例。首先,我得先确认什么是间接调用。间接调用通常指通过函数指针或虚函数表来调用函数,而不是直接使用函数名。这在多态或回调函数中很常见。 接下来,用户提到映射文件(map file)。映射文件通常由编译器生成,包含程序的内存布局信息,如函数地址、符号表等。需要确认在映射文件中如何体现间接调用的函数。可能的思路是,间接调用的目标函数会被编译进可执行文件,并在映射文件中列出,但调用点可能不会直接显示目标函数名,而是通过地址或符号引用。 然后,用户可能需要示例说明。比如,用C语言写一个使用函数指针的例子,编译后查看映射文件中的函数列表。例如,定义一个函数指针变量,指向不同的函数,然后调用它。编译时生成映射文件,查看其中是否包含被调用的函数。 需要确保示例正确,并且映射文件中的函数确实被列出。同时,可能需要解释如何生成映射文件,比如在GCC中使用`-Wl,-Map=output.map`选项。此外,引用相关的知识,比如引用[1]提到的多态,虽然这里可能是指C++的虚函数,但函数指针也是一种多态的表现。 还要考虑用户可能的深层需求,比如调试间接调用的问题,或者优化性能时分析函数调用关系。因此,除了示例,可能需要说明如何利用映射文件分析间接调用的目标函数,以及相关工具的使用,比如`nm`命令查看符号表。 最后,生成相关问题,帮助用户进一步探索,比如间接调用的调试方法、映射文件的结构、如何避免间接调用的性能影响等。</think>关于程序中包含间接调用及映射文件函数列表的示例说明: ### 一、间接调用基本原理 间接调用指通过指针或引用而非直接符号名调用的函数,常见于: 1. 函数指针调用 2. C++虚函数调用 3. 动态库函数调用 4. 回调函数机制 这类调用在编译时无法确定具体目标地址,需在运行时解析[^1]。 ### 二、映射文件中的函数映射示例 以下C程序示例包含函数指针调用: ```c #include <stdio.h> void target_func() { printf("Called via function pointer\n"); } int main() { // 定义函数指针变量 void (*func_ptr)() = &target_func; // 间接调用 func_ptr(); return 0; } ``` 编译时生成映射文件(GCC): ```bash gcc -Wl,-Map=program.map example.c -o program ``` 映射文件中相关片段可能包含: ``` .text 0x0000000000401100 0x15 *(.text.unlikely .text.*_unlikely) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(SORT(.text.sorted.*)) *(.text .stub .text.*) .text.target_func 0x0000000000401100 0x15 example.o .text.main 0x0000000000401115 0x2a example.o ``` ### 三、关键分析点 1. 映射文件会明确列出`target_func`的地址和所属目标文件 2. 函数指针变量`func_ptr`在符号表中显示为数据段变量 3. 间接调用在汇编层面表现为`callq *%rax`等指令形式 4. 使用`nm`工具可查看符号类型: ```bash nm program | grep target_func 0000000000401100 T target_func ``` ### 四、动态分析建议 1. 使用`objdump -d`反汇编查看调用指令 2. GDB调试时设置断点: ```gdb break target_func ``` 3. 使用`perf`工具跟踪函数调用关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值