我正在尝试使用 Microsoft的cpprestsdk 。我收到错误,所以我想查看错误代码。但是我无法找出error_code
的格式说明符,我收到了这个警告:
警告:格式'%d'需要'int'类型的参数,但参数3 类型'const std :: error_code'[ - Wformat =] printf(“HTTP Exception ::%s \ nCode ::%d \ n”,e.what(),e.error_code());
我应该如何打印错误代码?虽然%d
有效但我想知道实际的说明符,所以我不会收到任何警告。
答案 0 :(得分:3)
std::error_code
是一个类,不能作为printf参数传递。但您可以传递int
返回的error_code::value()
值。
答案 1 :(得分:1)
这是一种方式:
#include <system_error>
#include <cstdio>
void emit(std::error_code ec)
{
std::printf("error number: %d : message : %s : category : %s", ec.value(), ec.message(), ec.category().name());
}
但是,不要使用printf ......
#include <system_error>
#include <iostream>
void emit(std::error_code ec)
{
std::cout << "error number : " << ec.value()
<< " : message : " << ec.message()
<< " : category : " << ec.category().name()
<< '\n';
}