我正在使用std::cout
进行日志记录,并且当“请勿使用'cout'的地址,而是从lambda调用它的地址“时,sonarqube报告错误。
std::ostream *streamp;
streamp = &std::cout;
当我使用下面的代码时,在声纳贝中没有观察到错误。在
std::addressof
函数上使用std::cout
安全吗?std::ostream *streamp;
streamp = std::addressof(std::cout);
最佳答案
是的,在addressof
上使用std::cout
是安全的。但是,由于在&
上使用std::cout
同样安全,因此,这样做的唯一原因是使一个显然给您假阳性的工具安静(它没有意识到addressof
在做什么)。
最好使用&
并使用该工具中存在的任何机制来关闭误报。
关于c++ - 使用std::addressof(std::cout)而不是&std::cout有什么风险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62075074/