小编Szy*_*oda的帖子

避免或警告GCC中从const char*到bool的隐式转换

请考虑以下代码:

void foo(bool parameter) {
    std::cout << parameter << "\n";
}

int main() {
    foo("const char *argument");
}
Run Code Online (Sandbox Code Playgroud)

我希望编译器在传递时发出警告const char*而不是bool作为参数来发挥作用foo.

但GCC暗中转换它.我想-Wall,-Wextra-Wpedantic,但这些问题的警告.是否有可以捕获这种隐式转换的标志(无效的参数类型)?

忽略这个函数有一个类型参数的事实,bool有些人可能会认为这是一种糟糕的代码风格.我无法重构那部分.

该标准刚刚提到这种隐式转换将会发生:

可以将整数,浮点,无范围枚举,指针和指针到成员类型的prvalue转换为bool类型的prvalue.

我知道这种行为在if (ptr)语句中非常方便,但对于我来说,在传递参数的情况下,它显然是错误的并且是错误的来源.

c++ gcc gcc-warning implicit-conversion

24
推荐指数
2
解决办法
1440
查看次数

标签 统计

c++ ×1

gcc ×1

gcc-warning ×1

implicit-conversion ×1