gpt4 book ai didi

c - 使用 MINGW 强制 C 将 stdin 读取为二进制

转载 作者:行者123 更新时间:2023-11-30 15:18:59 25 4
gpt4 key购买 nike

因此,我有一个用例,我需要强制将 C 程序交叉编译到 Windows 以在 stdin 中以二进制格式读取。这对于 Windows 编译器来说非常有用,但不幸的是我正在使用 MinGW 编译这个程序,所以我无法设置 stdin 的模式,因为这是 MSDOS 之前、UNIX 之前的约定。我如何在 GCC 中编译此代码的同时强制发生这种情况?有什么想法吗?

错误的语句如下:

__setmode(__fileno(stdin), O_BINARY);
__setmode(__fileno(stdout), O_BINARY);

最佳答案

上面的语句与编译器无关,而是与您链接到的头文件和 C 库相关。

MinGW 使用 Microsoft 运行时库和兼容的头文件。您可能对这些函数的拼写不正确,请尝试删除头文件中的一些 _、grep for setmode 等:

grep -r setmode /usr/include
grep -r O_BINARY /usr/include

如果找不到这些,请从 Microsoft header 中复制原型(prototype)和 #define

cremno 建议这样做:

_setmode(_fileno(stdin), _O_BINARY);
_setmode(_fileno(stdout), _O_BINARY);

如果您确实找不到这些符号,请尝试以下操作:

extern int _setmode(int, int);
_setmode(0, 0x8000);
_setmode(1, 0x8000);

关于c - 使用 MINGW 强制 C 将 stdin 读取为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30969205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com