arm-none-eabi-gcc C语言从scanf到_read和函数调用栈顺序?
在C语言中,"scanf"函数是用于从标准输入获取用户输入的函数,而"_read"函数是用于从文件描述符中读取数据的底层系统调用函数。这两个函数在底层实现上有所不同。
当程序调用"scanf"函数时,它会阻塞程序执行,直到用户在标准输入中输入了数据。"scanf"函数会解析用户输入的数据并将其存储在指定的变量中。
在ARM Cortex-M系列处理器上,"scanf"函数的底层实现通常会调用一个名为"_read"的函数来实际读取输入数据。这是因为ARM Cortex-M系列处理器通常没有标准输入设备,因此需要通过底层系统调用函数来读取数据。
在ARM Cortex-M系列处理器上,函数调用栈的顺序通常如下:
- 程序调用"scanf"函数。
- "scanf"函数将会调用"_read"函数来读取输入数据。
- "_read"函数将会调用底层系统调用函数来从标准输入设备中读取数据。
- 读取到的数据将会传递给"_read"函数。
- "_read"函数将返回读取到的数据给"scanf"函数。
- "scanf"函数将返回读取到的数据给程序的调用者。
需要注意的是,具体的函数调用栈顺序可能会因编译器和操作系统的不同而有所差异。上述顺序仅作为一种常见情况的示例
原文地址: https://www.cveoy.top/t/topic/h8gV 著作权归作者所有。请勿转载和采集!