gpt4 book ai didi

c++ - 为特定操作系统编写代码时,标准库调用与所有操作系统 API 调用之间的权衡是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:25:10 24 4
gpt4 key购买 nike

在编写您知道将针对一个操作系统的内容时,使用标准库调用与操作系统的 API 调用有哪些优点和缺点?

例如,在 C++ 中,我专门为 Windows 编程,所以我应该这样做吗

memcpy(studentCopy, student, sizeof(Student));

或者坚持使用 Windows API 调用,例如:

CopyMemory(studentCopy, student, sizeof(Student));

我不确定哪种约定更好,并且无法从搜索中找到任何内容。仅仅是偏好吗?

编辑:学生的事情只是使用不同库的一个例子,没有具体询问,这是我想到的第一件事。

最佳答案

实际上,这取决于您想要实现的目标。

使用 Windows API 调用会使您的代码不可移植。

此外,编译器通常“理解”memcpystrcpy 等内容,并且可以根据它们的实际操作进行巧妙的优化(例如使用 SSE 指令用 4 条指令复制 32 个字节,而不是将三个值传递给一个函数并在该函数中执行复制 [这将必须检查对齐和大小等内容,然后确定如何实际进行复制]。

我个人只会在“不可避免”的情况下使用 Windows API 调用——也就是说,没有其他简单的方法可以达到预期的结果。如果有 C/C++ 标准功能,则使用它。

当然,在面向对象的设计中,您可能不想使用 memcpy 来复制变量,因为它们可能不属于同一类和/或非平凡的构造函数/析构函数, 所以

studentCopy = student; 

将是我的首选解决方案,无论系统如何。

关于c++ - 为特定操作系统编写代码时,标准库调用与所有操作系统 API 调用之间的权衡是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com