gpt4 book ai didi

c++ - 检查函数体是否为空

转载 作者:行者123 更新时间:2023-12-05 02:43:31 25 4
gpt4 key购买 nike

是否可以检查(在编译或运行时)函数或类方法是否有空体?

例如

void empty_body_function(){}
void non_empty_body_function(){int i;}

int main()
{
assert(magic(empty_body_function) == true);
assert(magic(non_empty_body_function) == false);
}

P.S.我这样定义非空体:函数/方法确实有非空体,当且仅当它在预处理后在 {} 中有任何代码(当然是有效的 C++ 代码)

P.P.S 回答“为什么”的问题:我想要实现的是检查特定接口(interface)实现是否“什么都不做”。无副作用,无计算等

最佳答案

据我所知,没有办法做到这一点。但是 C++ 元编程很复杂,很难说它是不可能的。

我会补充——在编译时,对于任何声明但未定义的函数,这是绝对不可能的。除了参数和返回值之外,编译器对函数的作用一无所知。

在运行时,您可以尝试使用函数的指针并可能做一些事情,但我想这方面的任何事情都将非常依赖于您的编译器/链接器配置。

另外,如果这个问题是针对实际用例的——我敦促你再考虑一下。检查函数体是否为空是一件很奇怪的事情。

关于c++ - 检查函数体是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66889878/

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