我们目前正在为某个库构建API.接口的一部分要求库获取并返回用户类,例如vector和string.
在简单场景中尝试模拟库的使用时,在调试模式下,系统会在传递字符串作为输入时进行压缩.
我相信在调试或发布模式下字符串类有不同的表示形式.然后我们的图书馆假定接收某个表示,不正确地读取数据成员并沿途碾碎.那么在API中传输STL对象的最佳方法是什么呢?目标操作系统是使用MSVC 8编译的Windows XP,尽管库用户将使用Windows,他们的编译器可能(也可能会)是不同的想法我们到目前为止:
让人们在调试模式下与调试链接并在发布模式下发布并不是不合理的.这就是几乎每个图书馆都能做到的.甚至像DirectX这样的大型项目都会发布调试其二进制文件的编译.#3是一个非常合理的选择/解决方案.
您应该避免在不同的二进制模块之间传递STL对象.
对于字符串,您必须依赖于const char*只读参数和char*, <buffer size>输入参数...
对于向量,可能会有点困难,特别是如果你必须改变向量的内容......
关于你的想法:
| 归档时间: |
|
| 查看次数: |
2466 次 |
| 最近记录: |