2010-08-14 20 views
1

可能重复:
C/C++ line number文件和行号的调试

嗨,

我有一个简单的错误管理器类,其他类使用报告其随后的错误打印到日志文件供以后检查。我可以打印出说明并给出错误代码。我也想,是因为它记录文件名和记录错误的行号(自动,而不是我每次写它)。任何方式来做到这一点?我知道这是因为我看到了,我找不到解决方案 - 可能是由于搜索条件不正确。

谢谢!

+1

[C/C++行号]的复制(http://stackoverflow.com/questions/2849832/cc-电话号码) – 2010-08-14 21:20:23

回答

6

是的,您可以使用__FILE____LINE__宏,这些宏分别扩展为文件名和行号。

8

正如詹姆斯所说McNellis,使用__FILE____LINE__宏。请注意,这些是宏,如果您只是在错误处理方法中使用它们,它们只会告诉您错误处理方法的定义。如果你不想在代码中传播它们,你需要在另一个宏中使用它们。事情是这样的:

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."); 
}