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

在编写一些您知道将针对一个操作系统的东西时,使用标准库调用与OS的API调用有什么优缺点?

例如,在C我专门为Windows编程,我应该这样做

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

或坚持使用Windows API调用,如下所示:

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

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

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

最佳答案
真的,取决于你想要实现的目标.

使用Windows API调用将使您的代码不可移植.

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

我个人只会使用Windows API调用,如果它们“不可避免” – 也就是说,没有其他简单的方法可以实现所需的结果.如果有C/C++标准功能,那么使用它.

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

studentCopy = student; 

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

转载注明原文:c – 在为特定操作系统编写代码时,标准库调用与所有OS API调用之间的权衡是什么? - 代码日志