gpt4 book ai didi

C++ EOF 命名空间

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:13 25 4
gpt4 key购买 nike

那么,出于好奇,为什么 EOF 没有定义命名空间?为什么不是::EOFstd::EOF

#include <cstdio>

while (std::scanf("%s", someStr) != ::EOF); // nope
while (std::scanf("%s", someStr) != std::EOF); // nope
while (std::scanf("%s", someStr) != EOF); // here we go

最佳答案

EOF<cstdio> 中定义的预处理器宏(在 C 头文件中 <stdio.h> 也可用于 C++)。

预处理器宏在源代码实际编译之前对源代码进行文本替换。因此,预处理器宏不是可以出现在任何命名空间中的名称。

这不同于可以出现在命名空间中的 header 中声明的函数名称。

关于C++ EOF 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998923/

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