gpt4 book ai didi

c - 将函数指针传递给静态函数是否可能/安全/理智?

转载 作者:太空狗 更新时间:2023-10-29 16:47:01 30 4
gpt4 key购买 nike

假设我只想通过传递指向该函数的函数指针来公开我的一个文件中的函数。将该函数声明为 static 是否安全?是否允许编译器执行任何会使我的函数指针无效的柔道,或者使其在该文件的上下文之外变得毫无意义,因为该函数被声明为特定于该文件?

不是我的代码,而是我的意思的一个(愚蠢的)例子:

void    static   cool_function(void);
void extern (*cool_function_ptr)(void); // Actually, I’m not sure of where the `extern` goes in a function-
// pointer declaration. Damn you, confusing function-pointer syntax!

鉴于该代码(或其语法正确近似值),从另一个文件访问 cool_function_ptr 是否非法?

最佳答案

这样做是完全安全的,而且通常很有用。 static 变量和数据指针也是如此。如果编译器想要进行任何花哨的优化(如非标准调用约定、内联、重构等),这可能会干扰通过来自不同翻译单元的函数指针调用函数的能力,编译器的责任 确定函数的地址永远不会被占用,或者生成代码的多个版本,其中一个版本可以安全地从外部使用标准调用约定进行调用。

关于c - 将函数指针传递给静态函数是否可能/安全/理智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5138330/

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