【发布时间】:2020-11-01 03:01:52
【问题描述】:
我正在使用 MSYS2 将 libfprintf 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可以是一个宏,它可以扩展为函数调用或数组解引用。