gpt4 book ai didi

c++ - 为什么我不能从另一个函数中调用匿名命名空间中的函数?

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

这段代码是我写的:

namespace {

void SkipWhiteSpace(const char *&s) {
if (IsWhiteSpace(*s)) {
s++;
}
}

bool IsWhiteSpace(char c) {
return c == ' ' || c == '\t' || c == '\n';
}

} // namespace

问题是编译器提示 IsWhiteSpace() 未在此范围内声明。但为什么?当然,命名空间是匿名的,但函数仍然位于同一命名空间内,不是吗?

最佳答案

可能是因为您在 SkipWhiteSpace 之后定义了 IsWhiteSpace

编辑:

我成功编译了以下代码:

#include <iostream>

using namespace std;

namespace
{
void Function2()
{
cout << "Hello, world!" << endl;
}

void Function1()
{
Function2();
}
}

int main()
{
Function1();
}

Function1 移动到 Function2 上方会导致您提到的错误。所以,是的,这是因为 SkipWhiteSpace 不知道 IsWhiteSpace。您可以通过提前声明函数然后在之后正常定义它们来解决这个问题,如下所示:

namespace
{
void Function1();
void Function2();

void Function1()
{
Function2();
}

void Function2()
{
cout << "Hello, world!" << endl;
}
}

关于c++ - 为什么我不能从另一个函数中调用匿名命名空间中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135198/

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