C++ 检查函数的主体是否为空

C++ 检查函数的主体是否为空,c++,C++,是否可以在编译或运行时检查函数或类方法的主体是否为空 例如 P.S.I定义非空的体,像:函数/方法确实有非空体,当且仅当它有任何代码有效的C++代码时,在预处理后{}内肯定是 p.p.S回答为什么问题: 我试图实现的是检查特定的接口实现是否没有任何作用。没有副作用,没有计算等据我所知,没有办法做到这一点。但是C++元编程是复杂的,很难说什么是不可能的。 我将在编译时添加,对于任何已声明但未定义的函数,这是绝对不可能的。编译器除了参数和返回值外,对函数的作用一无所知 在运行时,您可以尝试使用函数的

是否可以在编译或运行时检查函数或类方法的主体是否为空

例如

P.S.I定义非空的体,像:函数/方法确实有非空体,当且仅当它有任何代码有效的C++代码时,在预处理

后{}内肯定是 p.p.S回答为什么问题:
我试图实现的是检查特定的接口实现是否没有任何作用。没有副作用,没有计算等

据我所知,没有办法做到这一点。但是C++元编程是复杂的,很难说什么是不可能的。 我将在编译时添加,对于任何已声明但未定义的函数,这是绝对不可能的。编译器除了参数和返回值外,对函数的作用一无所知

在运行时,您可以尝试使用函数的指针,也可以执行一些操作,但我认为这方面的任何操作都将非常依赖于您的编译器/链接器配置


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

据我所知,没有办法做到这一点。但是C++元编程是复杂的,很难说什么是不可能的。 我将在编译时添加,对于任何已声明但未定义的函数,这是绝对不可能的。编译器除了参数和返回值外,对函数的作用一无所知

在运行时,您可以尝试使用函数的指针,也可以执行一些操作,但我认为这方面的任何操作都将非常依赖于您的编译器/链接器配置


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

我可以问一下您试图解决的问题是什么吗?@Dmitry从表面上看,您的问题的答案是否定的。但是,如果您解释实际问题,问题本身可能存在解决方案。@Dmitry我明白了。我通常不喜欢把重点放在为什么一个问题想做某事上,但在这种情况下,我认为这可能是必要的。代码并不是一个很好的思考C++的方法。e、 g.含有int i的主体;正如rustyx所指出的,这是一个空的身体。也许你可以问函数是否有副作用,因为这是函数的一个可观察的特征。没有也不应该检查函数的不可观察属性。@SergeyA我想检查特定的接口实现是否没有任何作用。没有副作用,没有计算,etc@Dmitry再说一次,你打算如何处理这些信息?想象一下这些细节神奇地呈现在你面前,你会如何处理它们?我能问一下你试图解决的问题是什么吗?@Dmitry从表面上看,你的问题的答案是否定的。但是,如果你解释了实际问题,问题本身可能存在解决方案。@Dmitry我明白了。我通常不喜欢把重点放在为什么一个问题想做某事上,但在这种情况下,我认为这可能是必要的。代码并不是一个很好的思考C++的方法。e、 g.含有int i的主体;正如rustyx所指出的,这是一个空的身体。也许你可以问函数是否有副作用,因为这是函数的一个可观察的特征。没有也不应该检查函数的不可观察属性。@SergeyA我想检查特定的接口实现是否没有任何作用。没有副作用,没有计算,etc@Dmitry再说一次,你打算如何处理这些信息?想象一下这些细节神奇地为你所用,你会如何处理它们?
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);
}