gpt4 book ai didi

c++ - 如何在 C++ 中避免/检查这个非常险恶的错误源

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:51 25 4
gpt4 key购买 nike

最近我偶然发现了一个错误,这是由于拼写错误、逗号运算符和默认值的组合造成的。一个术语有很多括号和逗号。一个逗号放在一个括号里太远了。该术语仍然是有效的 C++ 代码,但返回的值是错误的。在简化版本中,错误如下所示:

int intValue = MyString.toInt(),16;

toInt 方法有一个默认参数为 number-base(默认为 10)。变量 intValue 将始终为 16。

所以问题是,是否有任何样式指南规则可以避免此类错误或 C++ 检查器/编译器规则来帮助查找代码中的此类错误?

编辑

好的,我已经稍微更改了代码以使逗号更有意义:

char * MyString("0x42");
int intValue = stringToInt(MyString),16;

附言请不要怪我没有使用 std::string 和流。该代码仅用于简化演示。 :-)

最佳答案

对于 GCC,-Wunused-value 应该在这种情况下发出警告,因为未使用 MyString.toInt() 的返回值。该标志应该有助于避免大多数此类错误。要实际获得警告,可能需要将 __attribute__ ((warn_unused_result)) 属性添加到 toInt 方法。

在任何情况下,如图所示,简化示例都会导致“数字常量之前预期的非限定 ID”编译错误,除非按如下方式添加括号 int intValue = (MyString.toInt(),16);

关于c++ - 如何在 C++ 中避免/检查这个非常险恶的错误源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18012004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com