gpt4 book ai didi

c++ - 在 C++ 中使用 C 名称

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:50 24 4
gpt4 key购买 nike

我必须使 C 函数名称在 C++ 应用程序的开发环境 (Keil uVision) 中可见。不幸的是,显示的名称仍然使用 C++ 名称修改。因此,系统不会显示 Task1,而是显示 _Z5Task1Pv

在 C++ 中我调用

{
...
threadDef->pthread = (void (*)(void const*))getTaskID(tfunc);
...
threadId = osThreadCreate(threadDef, param);
}

然后在我的 C 文件中

extern "C" {
...
typedef void (*TaskFct)(void*);
...
static void Task1(void* param) { ... }
...
static TaskFct getTaskID(TaskFct tFunc) {
...
return Task1;
}
}

是否可以在 C++ 应用程序中获取纯 C 名称?

最佳答案

正如评论所说,extern "C"{...} 被 c++ 编译器用来防止名称重整(或至少是 c++ 名称重整)。我目前有一个设置,其中有一个用 c 编写的用户空间“驱动程序”和一些静态链接它的 c++ 应用程序。我使用 gcc 构建 MyCDriver.o 文件,然后使用 g++ 构建cpp 应用程序和驱动程序中的链接。在我想调用驱动程序函数的每个 cpp 类的顶部

 extern "C"
{
#include "MyCDriverHeader.h"
}

然后编译 cpp 应用程序:

 g++ -o MyCppApp MyCppApp.cpp MyCDriver.o

关于c++ - 在 C++ 中使用 C 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36504275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com