gpt4 book ai didi

铿锵C block : block function definition after call

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

我正在尝试将一些 GCC 嵌套函数移植到 clang。由于 clang 不支持 gcc 嵌套函数,我需要使用 c-block 代替。

但我想在调用它之后获得 block 定义。 (我需要这个订单,因为代码是从 MACRO 生成的,我无法安排这个订单)

所以在 gcc 中我有这个伪代码:

foo(){
auto void bar (void);
...
bar()
...
void bar(void) {
...some stuff
}
}

我可以在 C-block clang 函数中做到这一点吗?

这段代码工作正常

int main() {
void (^hello)(void);

hello = ^(void){
printf("Hello, block!\n");
};

hello();
return 0;
}

但是下面的代码

int main() {
void (^hello)(void);

hello();

hello = ^(void){
printf("Hello, block!\n");
};

return 0;
}

因段错误而失败。

最佳答案

在第二个示例中,hello 在调用之前尚未定义,因此它是一个 undefined symbol 。在使用某个东西之前,您必须告诉编译器什么

在您的伪代码中,函数原型(prototype)位于所有内容之前,它通过告诉编译器“这将在稍后定义”来解决错误。

关于铿锵C block : block function definition after call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41429644/

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