- 2
- 0
- 约9.11千字
- 约 10页
- 2026-06-09 发布于河北
- 举报
WindowsC开发面试题及详细答案
一、基础核心题(5题)
1.请解释Windows下C语言中__stdcall和__cdecl的区别,以及各自的适用场景
答案:
• 调用约定本质是函数调用时的参数传递规则、栈清理责任和函数名修饰方式:
◦ __cdecl:C默认调用约定,参数从右向左压栈,调用者清理栈(函数返回后由调用方回收栈空间),函数名修饰为_函数名(如intadd(inta)修饰为_add)。适用场景:可变参数函数(如printf),因为只有调用者知道实际传入的参数个数,能正确清理栈;也适用于大多数自定义函数。
◦ __stdcall:WindowsAPI默认调用约定,参数从右向左压栈,被调用者清理栈(函数内部自行回收栈空间),函数名修饰为_函数名@参数字节数(如intadd(inta,intb)修饰为_add@8)。适用场景:WindowsAPI函数、固定参数的库函数,优势是栈清理由被调用者完成,减少调用者代码量,且参数个数固定时更高效。
2.Windows下如何实现进程间通信(IPC)?请列举至少4种方式,并说明各自的优缺点
答案:
常用IPC方式及特性:
1. 管道(Pipe):
◦ 优点:简单易用,支持流式数据传输,分为匿名管道(父子进程)和命名管道(任意进程);
◦ 缺点:匿名管道仅支持父子进程通信,命名管道跨机器
原创力文档

文档评论(0)