是否有一种简单的方法可以构建包含_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!
答案 0 :(得分:2)
正如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!");
减少输入,正如大狼所说:
#define logfl(s) log("Error in "__FILE__":"S__LINE__" - "s)
logfl("too many bees!");