gpt4 book ai didi

c - 为什么这段代码会出现编译错误?

转载 作者:行者123 更新时间:2023-12-04 09:08:04 25 4
gpt4 key购买 nike

我试图理解闭包和函数指针之间的区别,我遇到了 this answer in SO

我不明白的是这段代码

BOOL (*lessThanTest)(int);
int lessThan = 100;

lessThanTest = &LessThan;

BOOL LessThan(int i) {
return i < lessThan; // compile error - lessThan is not in scope
}

考虑到 lessThan 是一个全局变量,为什么会出现编译错误,它可以从 LessThan 函数中访问,我错过了什么吗?

编辑

这不是我的代码,它取自 SO Function pointers, Closures, and Lambda 中的一个答案

最佳答案

闭包将词法范围内的所有变量带走,可能会延长它们的生命周期。函数指针不会——如果在其代码中引用的变量消失,它们就会被清除。

您提供的代码示例有点令人困惑。我相信它应该在函数内部,这意味着 lessThan 是一个局部变量。如果该范围已退出,但函数指针仍然存在,那么它的代码将引用一个不存在的变量 -- lessThan

关于c - 为什么这段代码会出现编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8095861/

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