64,635
社区成员
发帖
与我相关
我的任务
分享
图片在这里
extern "C"表示的一种编译和连接规约,而不是一种语言,仅指定编译和连接规约,但不影响语义,如果是C++项目指定了extern "C",仍然要遵守C++的类型检测、参数转换等规则。它只是让程序按照类C的编译和连接规约来编译和链接
extern“C” 应该只管到函数的名字吧,难道还有什么我不知道的? C++默认生成的函数名,是代码中的函数名称+参数衍生名, 加了extern "C",就没有参数衍生名了。
那我那个call_back函数需要给c库调用,我只需要把那个函数用extern C包起来,然后把函数名给参数结构体中的函数指针赋值就可以了对吗? [quote=引用 7 楼 bandaoyu 的回复:][quote=引用 4楼paschen 的回复:]extern "C"表示的一种编译和连接规约,而不是一种语言,仅指定编译和连接规约,但不影响语义,如果是C++项目指定了extern "C",仍然要遵守C++的类型检测、参数转换等规则。它只是让程序按照类C的编译和连接规约来编译和链接
那我那个call_back函数需要给c库调用,我只需要把那个函数用extern C包起来,然后把函数名给参数结构体中的函数指针赋值就可以了对吗? [quote=引用 4楼paschen 的回复:]extern "C"表示的一种编译和连接规约,而不是一种语言,仅指定编译和连接规约,但不影响语义,如果是C++项目指定了extern "C",仍然要遵守C++的类型检测、参数转换等规则。它只是让程序按照类C的编译和连接规约来编译和链接