error_code的格式说明符是什么?

时间:2018-03-23 14:02:37

标签: c++ format-specifiers cpprest-sdk

我正在尝试使用 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,但我认为它们对我没有任何帮助。

2 个答案:

答案 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';
}