【问题标题】:Redeclared extern FILE *stderr; libfprintf重新声明 extern FILE *stderr; libfprintf
【发布时间】:2020-11-01 03:01:52
【问题描述】:

我正在使用 MSYS2libfprintf v1.90.3 移植到 Windows 明威-w64。 本项目使用 NBIS 库 (NIST) 中的 bozorth3 算法。 他们对 nbis 库进行了一些更改,在 bozorth.h 头文件中他们重新声明了标准错误

/* Global supporting error reporting */
extern FILE *stderr;

我不明白为什么在Linux中编译时没有编译错误但在Windows中出现下一个错误:

../libfprint/nbis/include/bozorth.h:221:14:错误:预期 数字常量 221 之前的声明说明符或 '...' |外部 文件 *stderr;

在 Linux 中没有发生编译错误会发生什么?

谢谢。

【问题讨论】:

  • stderr (and the other standard streams) 的实现是实现定义的。唯一可以保证的是result 的类型为FILE *。换句话说,这意味着stderr 可以是一个,它可以扩展为函数调用或数组解引用。

标签: c++ c linux msys2


【解决方案1】:

定义stderr 的唯一认可方法是包含stdio.h

我不知道为什么库重新声明 stderr,但解决方案是删除该行,如果您在某处得到 stderr 的缺失声明,请添加 #include <stdio.h>

他们可能对errno 做了同样愚蠢的事情。如果您稍后发现errno 的声明,也将其删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-12
    • 2019-03-23
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    相关资源
    最近更新 更多