gpt4 book ai didi

c++ - 未声明的 Windows 中的 getchar_unlocked

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:05 31 4
gpt4 key购买 nike

这是我的代码:

#include <stdio.h>

void scan(int* i)
{
int t=0;
char c;
bool negative=false;
c=getchar_unlocked();
while(c<'0'&&c>'9')
{
if(c=='-')
negative=true;
c=getchar_unlocked();
}
while(c>'0'&&c<'9')
{
t=(t<<3)+(t<<1)+c-'0';
c=getchar_unlocked();
}
if(negative)
t=~(t-1); //negative
*i=t;
}

int main(int argc, char const *argv[])
{
int i;
scan(&i);
return 0;
}

我知道这里定义为scan的函数比scanf快,在编程比赛中很有用。但出于某种原因,这段代码在 Windows 上无法运行,而在 Linux 上运行。我该怎么做才能让它在 Windows 上运行?我正在使用来自 Dev-C++ 的 g++ 编译器。

最佳答案

getchar_unlocked 不是 C 或 C++ 标准函数,因此它不能在 Windows 上运行也就不足为奇了。我认为这是一个 POSIX 标准,但 Windows 编译器并不支持所有 POSIX 函数。

如果将 getchar_unlocked 替换为 getchar,它会有点工作,尽管算法看起来不太正确。

你可以通过条件编译来做到这一点,例如这样

#ifdef _WINDOWS
// no getchar_unlocked on Windows so just call getchar
inline int getchar_unlocked() { return getchar(); }
#endif

关于c++ - 未声明的 Windows 中的 getchar_unlocked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010505/

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