1
12
由于C++不允许从枚举值自动转换为枚举名称或类似的名称,所以需要一个函数来完成。由于您的错误代码没有在您的O/S中定义,您需要自己翻译它。 一种方法是大转换语句。另一种是表搜索或表查找。什么是最好的取决于错误代码集。 表搜索可以这样定义:
|
2
3
在windows中可以使用
请参阅下面的链接以获取示例。 http://msdn.microsoft.com/en-us/library/ms679351(v=VS.85).aspx http://msdn.microsoft.com/en-us/library/ms680582(v=VS.85).aspx
|
3
3
类似 harper's idea ,但更笼统一点:
|
4
2
就我而言,错误代码只是枚举的一个子集。因为C++中没有漂亮的枚举(这使得日志很难解析),所以错误代码就不那么容易了。 对于错误代码,解决方案非常简单,尽管:
当然你可以提供传统的
其思想是返回指向文本的指针,而不是返回错误代码(尽管包装在一个类中是为了类型安全)。 用法:
|
5
2
您应该记住,这些错误字符串可能不是您想要向用户显示的。为了便于翻译,用户的混乱应该保存在资源中。 错误代码的字符串用于日志或诊断,不需要翻译。 可以使用此技巧在parralell中定义错误代码和字符串:
(从subversion源复制) |
6
1
这并不重要,因为错误应该是异常而不是规则,但是表查找通常比运行大开关语句快(除非它们得到了极大的优化)。 |
7
0
我想要一种方法,让错误代码(int)和字符串描述(任何字符串)声明在一个地方,只有一个单一的地方,上面的例子都不允许这样(ERR_OK必须声明在某处,然后“ERR_OK”被映射到其他地方)。 因此,我声明了一个简单的类,它同时存储int和string,并为int->字符串转换维护一个静态映射。我还添加了一个“auto cast to”int函数:
然后,您只需声明错误代码如下:
然后,任何返回int的函数都可以返回1
我看到的唯一限制是,如果声明静态错误对象的.h文件包含在many.cpp中,则会多次创建静态错误对象(这就是我在构造函数中执行调试测试以检查映射的一致性的原因)。如果你没有成千上万的错误代码,这应该是一个问题(可能有一个解决方法…) 牛仔 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |