我写了这段代码:
namespace {
void SkipWhiteSpace(const char *&s) {
if (IsWhiteSpace(*s)) {
s++;
}
}
bool IsWhiteSpace(char c) {
return c == ' ' || c == '\t' || c == '\n';
}
} // namespace
Run Code Online (Sandbox Code Playgroud)
问题是编译器抱怨这一点IsWhiteSpace() was not declared in this scope.但为什么?当然,命名空间是匿名的,但功能仍然在同一个命名空间内,不是吗?
也许是因为你定义IsWhiteSpace之后SkipWhiteSpace.
编辑:
我成功编译了以下代码:
#include <iostream>
using namespace std;
namespace
{
void Function2()
{
cout << "Hello, world!" << endl;
}
void Function1()
{
Function2();
}
}
int main()
{
Function1();
}
Run Code Online (Sandbox Code Playgroud)
移动Function1上面Function2你提到的错误结果.所以,是的,这是因为SkipWhiteSpace不知道IsWhiteSpace.您可以通过提前声明函数然后正常定义它们来解决这个问题,如下所示:
namespace
{
void Function1();
void Function2();
void Function1()
{
Function2();
}
void Function2()
{
cout << "Hello, world!" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |