微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用SDK特定的API或标准c函数

gcc (GCC) 4.7.2
PJ SIP 2.1

你好,

我正在开发一个将使用PJSIP API的应用程序.

只看api文档,我看到一些似乎只是标准C库的包装器的函数.即pj_memset,pj_strncpy,pj_strlen等

我可以看到一些可能值得考虑pj_strncpy_with_null()的替代方案,它将始终为NULL终止一个字符串.另一个优点可能是pjsip使用pj_str_t结构来存储字符串和大小.这可能比使用正常的C字符串更好.

是否有任何点使用pj_size_t超过size_t,这是可携带的?

快速参考的链接在这里

http://www.pjsip.org/pjlib/docs/html/group__PJ__PSTR.htm

使用PJSIP比标准C库有什么真正的优势?

非常感谢任何建议,

解决方法

简短的答案:使用PJSIP API(全部).

长的答案:这取决于

如果您正在为标准桌面(即x86 / x64 Windows / Mac / Linux)编程应用程序,那么否则,如果您使用标准C库或包装器(如PJSIP功能)并不重要.实际上,当然可能会有函数(正如你指出的)pj_str_t struct而不是char *;那么使用PJSIP API来简化和消除转换的需要会更容易.

我假设的包装器的原因是使嵌入式设备更容易开发.我不是指ARM或其他非x86处理器 – 尽管它也可以应用于此;我的意思是自定义嵌入式设备:具有非常具体目的和不经常更改的内容.这些嵌入式设备的功能非常有限,有时甚至缺少操作系统.没有操作系统,这些处理器可能没有malloc功能等.通常,与设备相关联的库,因为它们被定制得如此之多,并不完全是“标准的”,并且在一些小的方面是不同的.通过拥有所有的封装,PJSIP可以避免大多数问题,甚至为Strcpy或malloc等所有设备运行“相同”代码提供全面的实现.

包装纸也提供了“钩子”的手段.钩子可以实现更好的错误消息(并且可能的处理). PJSIP是否正在进行此操作尚不清楚(我从未使用过PJSIP – 我正在使用其他框架的经验),但我只是指出了为什么框架可能会打扰所有的东西.

最后,它归结为你的目的:如果你首先选择使用PJSIP,那么我会全力以赴使用它的所有API.如果你只是在几个地方使用它(无论什么原因),那可能并不重要.再次,PJSIP似乎瞄准了嵌入式设备(列出了诺基亚甚至是RTOS系统),其中提供包装器甚至是“标准”功能是相当普遍的.如果是这种情况,并且您以这种方式使用它,绝对会使用整个API.

原文地址:https://www.jb51.cc/c/114819.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐