0

我正在尝试使用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有效,但我想知道实际的说明符,这样我就不会收到任何警告。

PS:我在这里看到了一些:https ://msdn.microsoft.com/en-us/library/75w45ekt(v=vs.120).aspx ,但我认为它们对我没有任何帮助.

4

2 回答 2

3

std::error_code是一个类,不能作为 printf 参数传递。但是您可以传递interror_code::value().

于 2018-03-23T14:04:33.950 回答
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';
}
于 2018-03-23T14:07:00.167 回答