使g++;使用gcc规则编译C 我有一个.cp源文件,其中包含C和C++代码。C代码不使用g++编译,所以我需要使用gcc

使g++;使用gcc规则编译C 我有一个.cp源文件,其中包含C和C++代码。C代码不使用g++编译,所以我需要使用gcc,gcc,g++,Gcc,G++,使用extern“C”{}不起作用,因为这只是告诉编译器如何处理函数名,我希望g++在代码的一部分完全像gcc一样工作,在另一部分像g++一样工作 我知道我可以把它们放在单独的文件上,但是我必须用C代码创建一个文件头,以便在其他C++文件中使用它,这就是我试图避免的。除了C++代码之外,我不希望这些函数可见。 这有意义吗?这可能吗?谢谢 < P>将它们放在单独的文件中,用C++声明文件中的函数。您不需要创建标题 C++代码(blah.cpp): C代码(blah.C): 这是一个好主意,但我认为

使用
extern“C”{}
不起作用,因为这只是告诉编译器如何处理函数名,我希望g++在代码的一部分完全像gcc一样工作,在另一部分像g++一样工作

<>我知道我可以把它们放在单独的文件上,但是我必须用C代码创建一个文件头,以便在其他C++文件中使用它,这就是我试图避免的。除了C++代码之外,我不希望这些函数可见。
这有意义吗?这可能吗?谢谢

< P>将它们放在单独的文件中,用C++声明文件中的函数。您不需要创建标题

C++代码(blah.cpp):

C代码(blah.C):


这是一个好主意,但我认为g++没有对此做出任何规定。也许你可以使用G++标志,让它对它所接受的东西有一点许可,同时在一定程度上修复C代码,直到它们在中间相遇。

< P>制作同一个源的2个副本,一个是由G++编译的,另一个是GCC。用

阻止C++部分
#ifdef __cplusplus
#if 0
...
#endif
#endif
<> > GCC不尝试编译C++代码。< /P> 将extern“C”{}添加到g++块中,以便它了解C部分的函数原型。这样做不需要标题;它可以写入源文件中


分别编译并链接它们。

是的,这很有效。事实上,这就是我现在正在做的。虽然有很多函数和结构声明,但我试图避免复制粘贴所有这些。我想知道是不是有一个像pragma之类的神奇的东西。这难道不会导致代码永远无法编译吗?代码介于
#if 0
#endif
之间。
// C function definitions
int foo(int x) {
    return x * 3;
}
int bar(int x) {
    return x * 2;
}
#ifdef __cplusplus
#if 0
...
#endif
#endif