在十多年没有使用 C++ 编程之后,我正在尝试向旧版 C++ Win32 DLL 添加正确的错误报告。
这有力地提醒了在 C/C++ 中使用空终止字符串令人难以置信的乏味——更不用说潜在的缓冲区溢出和安全问题了。
我正在考虑使用更高级的字符串库——可能是 MFC CString 或 STL 库。
编辑
我们软件的两个旧版本都使用 DLL - 用 C++ 编写;和更新的版本 - 用 C# 编写。
编译器是VS2008。
对于第一遍,我将记录到标准 Windows 事件日志,因为将错误消息传递回 DLL 客户端将是一个重大的架构变化(当前架构很糟糕,多个故障模式被折叠成一个布尔通过/失败返回值一直传递到调用堆栈。不用说,这使得问题诊断成为一场噩梦)。但我想在以后改进这一点。
字符串库问题
既然这是一个 DLL,这甚至是一个好主意吗?
DLL 是否有任何特殊注意事项?
我应该注意的问题?
为此目的,一个图书馆是否比另一个图书馆更好?
空字符串问题
如果我遇到空终止,我应该使用哪组字符串函数?MS 帮助文档不鼓励使用旧的 C 函数(例如 strcat 等)。但是现在似乎有很多很多其他选项可用(例如_tcscat、_mbscat、wcscat 等)。我应该使用哪个,为什么?