C++ 用于调试的文件和行号

C++ 用于调试的文件和行号,c++,C++,可能重复: 嗨 我有一个简单的错误管理器类,其他类使用它来报告错误,然后将这些错误打印到日志文件中供以后检查。我可以打印出描述并给出错误代码。我还想让它记录错误记录的文件名和行号(自动,而不是我每次都写)。有办法吗?我知道这是可以做到的,因为我已经看到了,我只是找不到解决方案-可能是由于不正确的搜索词 谢谢 是的,您可以使用分别扩展到文件名和行号的\uuuu文件

可能重复:

我有一个简单的错误管理器类,其他类使用它来报告错误,然后将这些错误打印到日志文件中供以后检查。我可以打印出描述并给出错误代码。我还想让它记录错误记录的文件名和行号(自动,而不是我每次都写)。有办法吗?我知道这是可以做到的,因为我已经看到了,我只是找不到解决方案-可能是由于不正确的搜索词


谢谢

是的,您可以使用分别扩展到文件名和行号的
\uuuu文件
\uuuu行宏。

是的,您可以使用分别扩展到文件名和行号的
\uuuu文件
\uuuu行宏。

正如詹姆斯·麦克内利斯所说,使用
\uuuu文件\uuuuuu
\uuuuu行\uuuuuuuu
宏。请注意,这些是宏,如果您只是在错误处理方法中使用它们,它们只会告诉您错误处理方法的定义位置。如果不想在代码中传播它们,则需要在另一个宏中使用它们。大概是这样的:

void my_error_handler(const char* file, int line, const char* message) {
    // ...
}

#define ERROR(MESSAGE) my_error_handler(__FILE__, __LINE__, MESSAGE)
然后您可以在代码中使用它:

if (1 == 2) {
    ERROR("Something went wrong.");
}

正如James McNellis所说,使用
\uuuu文件\uuuuuuu
\uuuu行\uuuuu
宏。请注意,这些是宏,如果您只是在错误处理方法中使用它们,它们只会告诉您错误处理方法的定义位置。如果不想在代码中传播它们,则需要在另一个宏中使用它们。大概是这样的:

void my_error_handler(const char* file, int line, const char* message) {
    // ...
}

#define ERROR(MESSAGE) my_error_handler(__FILE__, __LINE__, MESSAGE)
然后您可以在代码中使用它:

if (1 == 2) {
    ERROR("Something went wrong.");
}
副本的副本