3
我有以下代码。被调用的对象不是函数或函数指针
typedef pid_t (*getpidType)(void);
pid_t getpid(void)
{
printf("Hello, getpid!\n");
getpidType* f = (getpidType*)dlsym(RTLD_NEXT, "getpid");
return f(); // <-- Problem here
}
编译器抱怨called object ‘f’ is not a function
。这里发生了什么?我没有以正确的方式声明和使用函数指针f?
是的你是正确的无效*可以转换为C中的任何类型,但不是在C++中,因此为了便于携带,我保留它。 – pythonic
@ user1018562,当你用C编写时,用C写!没有可移植性问题。您可以将C编译文件和C++编译文件链接在一起。 – Shahbaz
@ user1018562:当您想要编写C和C++的子集时,这只是一个问题,C和C++本身就是一种艺术形式,需要熟悉这两种语言。 Shahbaz是对的,在链接时兼容性要容易得多。 –