c++ - 函数内部的函数声明是否有用?

标签 c++ c declaration

我们可以在函数内部声明函数(我想要一个局部变量,但它被解析为函数声明):

struct bvalue;
struct bdict {
    bdict(bvalue);
}
struct bvalue {
    explict operator bdict() const;
}
struct metainfo {
    metainfo(bdict);
}
void foo(bvalue v) {
    metainfo mi(bdict(v)); // parses as function declaration
    metainfo mi = bdict(v); // workaround
                            // (this workaround doesn't work in the presence of explicit ctors)
}

唯一的原因是“因为它使解析器更简单”和“因为标准这么说”,还是有一个晦涩的用途?

最佳答案

这确实是一个 C 问题,因为这种行为是直接从 C 继承而来的(尽管由于 最令人头疼的解析,它在 C++ 中受到更多关注)。

我怀疑答案(至少在 C 的上下文中)是,这允许您将函数声明的存在范围精确到需要它们的位置。也许这在 C 的早期很有用。我怀疑有人会再这样做,但为了向后兼容,它不能从语言中删除。

关于c++ - 函数内部的函数声明是否有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6089452/

相关文章:

c - 旋转时点正在到达原点

python - 如何提高 python 中的 sleep /暂停计时精度?

c - 如何修复返回 str 的转换基础

c - C语言中的插入排序

Powershell 参数声明替代方案

c# - 在类声明中使用 new 关键字

c++ - 如何显式声明内联函数?

c++ - 在 C++ 中立即退出 'while' 循环

C++ 禁止声明没有类型的 'binaryTreeType'

c++ - Unicode 字符 Visual C++