gpt4 book ai didi

c++ - MACRO 将 __FILE__ 和 __LINE__ 与格式连接起来

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:35 25 4
gpt4 key购买 nike

我在名为 Test.cpp 的 .cpp 文件中按以下方式使用了宏,该文件位于位置 c:\Test\Test.cpp

内部测试.cpp

#define FILE_NAME strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__
#define S1(x) #x
#define S2(x) S1(x)
#define LOCATION FILE_NAME " : " S2(__LINE__)
//#define LOCATION __FILE__" : " S2(__LINE__) Working but giving the whole file path where as i need only Filename:Line number

Inside Function
{
::MessageBox(NULL,LOCATION,"Test",MB_OK); //Here i am getting only Filename .
}

请帮我写一个宏,这样我就可以在我的应用程序中获得文件名(不是完整路径,只有文件名)和行号。

最佳答案

您尝试将字符串文字与 strrchr 的结果连接起来。这是不可行的。你需要一个辅助函数,比如

std::string get_location(const std::string& file, int line)
{
std::ostringstream ostr;
size_t bspos = file.find_last_of('\\');
if (bspos != std::string::npos)
ostr << file.substr(bspos + 1) << " : " << line;
else
ostr << file << " : " << line;
return ostr.str();
}

#define LOCATION (get_location(__FILE__, __LINE__))

关于c++ - MACRO 将 __FILE__ 和 __LINE__ 与格式连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24882890/

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