我正在处理代码,该代码将特定协议定义的大量ascii文本作为输入.原作者将原始协议中的"string(1)"数据类型解释为代码中的字符.
在角落的情况下有很多微妙的错误,你有代码,如:
char theChar = whatever();
if(theChar == 7) {...}
Run Code Online (Sandbox Code Playgroud)
真正的意思是:
if(theChar == '7') {...}
Run Code Online (Sandbox Code Playgroud)
为了尝试一次捕获所有这些,有没有办法禁用隐式转换为'char'?如果没有,那么追踪所有这些的最佳方法是什么?
您应该能够为 char 编写一个简单的替换类(它将 char 作为其数据,并提供一些强制转换运算符以允许它像 char 一样使用),该类不允许隐式强制转换整数,然后搜索并用“mychar”替换“char”。这将引发您可以修复的编译器错误,然后如果您愿意,可以将代码恢复为再次使用 char,或者坚持使用您的类。
这是一个很好的例子,说明临时使用宏在 C++ 中非常有用......
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |