gpt4 book ai didi

c++ - MISRA C++ 2008 奇怪警告

转载 作者:太空狗 更新时间:2023-10-29 21:22:00 24 4
gpt4 key购买 nike

下面是代码,

std::stringstream os;
for (size_t i = 0U; i < len; i++) {
os << static_cast<uint32_t>(src[i]);
}

Warning is: "advisory Rule 14-8-2, Viable set contains both function and template: std::basic_ostream::operator<<"

下面这行代码

os << static_cast<uint32_t>(src[i]);

请建议如何解决相同的问题,我是 c++ 的新手,并且确定相同。

最佳答案

Misra 警告被触发是因为 basic_ostream 定义一个成员 operator<< 这是一组非模板重载,也是一组 free function template版本。正如警告所说,重载决议的候选集包括这两者 - 函数模板和非模板。

你的选择是要么抑制这一行的警告,要么想办法不使用 operator<<执行格式化输出。后者可以通过创建数字的中间字符串表示,然后使用 basic_ostream::write 来完成。输出字符。如果你有 C++11 编译器,你可以使用 std::to_string 做这个。

auto s = std::to_string(42U);
std::stringstream ss;

ss.write(s.c_str(), s.size());

如果你不能使用to_string ,或者需要额外的格式,总有 s(n)printf用于创建字符串表示。

我个人的意见是取消该警告,理由是您使用的是标准库中定义明确且众所周知的类型。

关于c++ - MISRA C++ 2008 奇怪警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21449645/

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