这个是和连接规则有关系的。连接规则的用处是,你声明了一个连接规则。并不是意味着你的函数是用这种语言写的。而是这个函数象用这种语言写的函数那样被调用。在c++的编译器里,所有函数的默认的连接声明都是extern "c++"。这样。如果你想以c的形式调用以个函数,那么在它的前面加extern "c".
如果你的一个函数是用c方式连接的话,那么指向这个函数的指针也必须是以c的方式连接。例如:
extern "C" {
int fc(int);
int (*fp1)(int) = fc;
}
如果都是c++的,那么不用写extern "c++"
int fcpp(int);
int (*fp2)(int) = fcpp; // Both have C++ linkage
还有,在下面如果composer是个c函数