Linux下用g++编译c程序

http://zhidao.baidu.com/question/142644759.html

我现在需要往一个C++程序里加功能,需要用另一个程序的源代码,但是那个程序是C写的,用原来那个程序的makefile的时候出了一堆诸如结构体Forbidden,node未定义的问题,请问有没有一个方法可以避免这个问题,让我可以同时编译并生成可执行程序?

PS:我实在懒得改了。。几千行的程序啊.急!
原来这个问题比想象中的严重多了,因为C++的代码里包含了一个C的头文件,所以编译铁定出错,期待牛人帮忙。。有人建议是,先把C的部分编译成一个静态库,但是我不知道怎么弄,求教中~恳请大家了~~我加分 

明白啦,不过我还是想做成静态库,因为本来不是我的程序,改动太大也不太好,链个库算了,不知可否告诉我怎么做~(如果实在繁琐就算啦) 

还是有问题。。我用了extern "C", 错误信息是一样的,诸如:
In file included from ancest2.cpp:28:
cons.h: error: ISO C++ forbids declaration of 'group_type' with no type.

我的静态库弄好了,用C编译器就没问题,这到底是怎么回事呢。。抓狂中

我用一个例子来告诉你怎么样在 C++ 里使用C的头文件/函数。

比方说我有一个C的头文件叫 c.h, C的源码文件叫 c.c,内容分别是

c.h:
#ifndef _ASDFD_INCLUDED_
#define _ASDFD_INCLUDED_

#include 

extern int test(int a);

#endif

c.c:
#include "c.h"

int test(int a)
{
 printf("A = %d\n", a);
 return a*a;
}

现在我想在c++中使用c.c中提供的函数test(),我的c++文件名字叫 a.cpp,那么里面跟C有关的部分就要用 extern "C" {} 大括号括起来,看看我的
a.cpp:
#include 
using namespace std;

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

int main()
{
 int b = 12;

 b = test(b);

 cout<<"b = "< 
  

你可能感兴趣的:(C++)