gpt4 book ai didi

c++ - 函数模板内的相同文本字符串

转载 作者:行者123 更新时间:2023-11-30 01:49:55 27 4
gpt4 key购买 nike

将长消息字符串保留在函数模板之外更好,还是在这种情况下编译器总是创建该字符串的一个拷贝?我是否应该将“长错误消息”放在模板函数之外,例如在单独的 printError 函数中?

template<typename T>
function f( ARGS )
{
if ( some_check(ARGS) )
cout << "Long error message independent of T";

...
}

最佳答案

虽然这个问题的答案取决于链接器支持的内容,但您可以合理地确定,在启用任何级别的优化后,重复的字符串文字将合并为一个。

特别是,GCC 提供了选项 -fmerge-constants只要链接器允许,它将跨编译单元合并相同的常量,包括字符串文字。这在 -O、O2、O3 和 -Os 处启用。同样,LLVM 有一个优化过程,-constmerge它合并了重复的全局常量。

关于c++ - 函数模板内的相同文本字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259675/

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