使用gcc规则使g ++编译C

jma*_*ias 2 gcc g++

我有一个包含C和C++代码的.cpp源文件.C代码不使用g ++编译,所以我需要使用gcc.

使用extern "C" {}不起作用,因为这只是告诉编译器如何处理函数名称,我希望g ++完全表现为gcc的一部分代码,而g ++就像另一部分.

我知道我可以只把它们放在单独的文件,但后来我不得不创建一个与C代码的文件头能在其他C++文件中使用它,这是我想要避免的.我不希望除C++代码之外的任何人都可以看到这些函数.

那有意义吗?这甚至可能吗?谢谢!

R. *_*des 5

将它们放在单独的文件中,并使用C++声明文件中的函数.您不需要创建标头.

C++代码(blah.cpp):

// C function declarations
extern "C" {
    int foo(int x);
    int bar(int x);
}

// C++ function definitions
int qux(int x) {
    return foo(bar(x));
}
Run Code Online (Sandbox Code Playgroud)

C代码(blah.c):

// C function definitions
int foo(int x) {
    return x * 3;
}
int bar(int x) {
    return x * 2;
}
Run Code Online (Sandbox Code Playgroud)