我有在H文件中定义的static inline
功能,并在一个C文件中的一个点,我指定一个函数指针,是这样的:C:指针内联函数
了foo.h :
static inline void frobnicate(void) {
// frobs something.
}
foo.c的
#include "foo.h"
void execute(void (*func)(void)) {
func();
}
void blahBlahBlah(void) {
execute(frobnicate);
}
bar.c
#include "foo.h"
// ...
frobnicate();
所以我认为在这里会发生的事情是,编译器将内联从bar.c中调用frobnicate
,但在foo.c中,它实际上必须创建一个函数来实现frobnicate
,以便它可以工作指向它的指针。
任何人都可以确认我的理解是否准确,否则纠正我?
*您可以通过阅读生成的代码进行确认。我不认为这个*具有特定的工作方式。如果编译器“有人想要这个地址,那么我们就不要内联”。 – unwind 2012-01-16 20:10:03
请记住,'inline'对于编译器来说只是一个_suggestion_。 – 2012-01-16 20:10:23