gpt4 book ai didi

c++ - 在 GCC 中使用一个 C 函数编译 C++

转载 作者:行者123 更新时间:2023-12-01 14:29:04 35 4
gpt4 key购买 nike

我想使用 gcc 在 .cpp 程序中调用一个在 .c 文件中声明的 C 函数。我使用的命令是:

gcc {.cpp 文件} -lstdc++ {.c 文件}

我不能只将 C 文件转换为 CPP,但如果我包含一个公共(public) header ,则自然会发生以下两种情况之一:

  1. CPP 文件不理解什么是 C 头文件
  2. C 文件不理解 CPP header 是什么。

我该怎么做?我能否以某种方式先编译 C 函数然后再使用它?

最佳答案

这是因为 C++ 允许重载方法。为此,编译器标记方法名称以指示可以传递的参数类型(所谓的“名称修改”)。

如评论中所述,您需要在任何调用 C 的 C++ 方法中使用 extern C 声明。要允许 C 调用 C++,您需要一个 extern C 方法在 C++ 源代码中允许从 C 调用它。有意义吗?

相应地构建您的 header ,以便它可以从 C 和 C++ 源代码中包含:

#ifdef __cplusplus
extern "C" {
#endif

... // body of header

#ifdef __cplusplus
} // closing brace for extern "C"

#endif

更多信息见: https://www.oracle.com/technical-resources/articles/it-infrastructure/mixing-c-and-cplusplus.html

https://www.geeksforgeeks.org/extern-c-in-c/

关于c++ - 在 GCC 中使用一个 C 函数编译 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63647266/

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