gpt4 book ai didi

c++ - 在字符串变量中包含行号和文件名

转载 作者:行者123 更新时间:2023-11-30 04:13:30 25 4
gpt4 key购买 nike

有没有一种简单的方法来构建包含 _FILE__LINE_ 值的字符串?

我可以这样做:

std::stringstream ss;
ss << "Error in "<<_FILE_<<":"<<_LINE_<<" - too many bees!";
log(ss.str());

但这是一个 PITA,与理想情况相比可能是:

log("Error in "+_FILE_+":"+_LINE_+" - too many bees!");

在 C++/STL/boost 中有没有一种巧妙的方法来做到这一点?请注意,我仅限于较旧的编译器,没有 C++11!

最佳答案

正如 Alex 评论的那样:双重宏扩展使 __LINE__ 成为一个字符串并让编译器为您连接这些字符串:

#define S(x) #x
#define S_(x) S(x)
#define S__LINE__ S_(__LINE__)

log("Error in "__FILE__":"S__LINE__" - too many bees!");

按照 greatwolf 的建议减少打字:

#define logfl(s) log("Error in "__FILE__":"S__LINE__" - "s)

logfl("too many bees!");

关于c++ - 在字符串变量中包含行号和文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19401315/

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