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,api,standard-library 来源: https://codeday.me/bug/20190825/1714615.html