如何从 FT_Error 代码中获取相应的错误字符串?

How can I get the corresponding error string from an FT_Error code?

给定一个FT_Error,是否有macro/function到return对应的错误信息字符串?

据我所知,答案是

您应该创建自己的宏或函数, 使用 fterrors.h 中定义的宏。 例如,以下代码将起作用:

#include <ft2build.h>
#include FT_FREETYPE_H

const char* getErrorMessage(FT_Error err)
{
    #undef FTERRORS_H_
    #define FT_ERRORDEF( e, v, s )  case e: return s;
    #define FT_ERROR_START_LIST     switch (err) {
    #define FT_ERROR_END_LIST       }
    #include FT_ERRORS_H
    return "(Unknown error)";
}

阅读 fterrors.h(在我的环境中的 /usr/local/include/freetype2/ 中找到)以获取更多详细信息和另一个示例。

为了防止其他人偶然发现这个问题,FreeType2 版本 2.10.1 中引入了 FT_Error_String 以检索 FT_Error 代码的错误字符串。

FT_Error error = ...
if (error != 0)
{
    puts(FT_Error_String(error), stderr);
}

重要提示:必须在编译FreeType时定义FT_CONFIG_OPTION_ERROR_STRINGS否则函数将returnNULL.