如何使用相同的C++代码与C代码和C++代码[关闭]

y0u0uwnf  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(120)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

18天前关闭
Improve this question
我有这样的情况:文件A.h:

#ifdef __cplusplus
extern "C" {
#endif

A_functions_declarations

#ifdef __cplusplus
}
#endif

文件A.cpp:A_functions_definitions
文件B.c:

B_functions - using A_functions

文件C.cpp:C_functions -还需要使用A_functions
简单地说,我有cpp文件,其中包含我从'c'文件中使用的代码和函数,我想从另一个cpp文件中使用cpp文件中的相同函数。
在构建代码时,我会为这些常用函数获取未定义函数,
我试着“玩”外部的“c”定义,但没有任何成功。

vcirk6k6

vcirk6k61#

extern_c_test.h:

#ifndef EXTERN_C_TEST_H
#define EXTERN_C_TEST_H

#ifdef __cplusplus
extern "C" {
#endif

void foo(void);

#ifdef __cplusplus
} // extern "C"
#endif

#endif // EXTERN_C_TEST_H

extern_c_test.cpp:

#include "extern_c_test.h"
#include <iostream>

extern "C" void foo()
{
    std::cout << "Bar!" << std::endl;
}

主.c:

#include "extern_c_test.h"

int main(int argc, char *argv[])
{
    (void) argc; (void) argv;

    foo();

    return 0;
}

main_cpp.cpp:

#include "extern_c_test.h"

int main(int, char **)
{
    foo();

    return 0;
}

编译(用于gcc):

g++ -c extern_c_test.cpp -o extern_c_test.o -lstdc++
gcc main_c.c extern_c_test.o -o extern_c_test -lstdc++
g++ main_cpp.cpp extern_c_test.o -o extern_c_test2

测试操作系统:Ubuntu 20.04.6 LTS

相关问题