LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 638|回复: 5

请问在.c文件里面的cpp代码怎么总是编不过啊?

[复制链接]
发表于 2004-9-12 09:27:26 | 显示全部楼层 |阅读模式
比如我用
test.h test.cpp 定义我的测试类,main.c是主文件
下面是test.h
class base
{
        public:
                base():i(0){}
                base(int in){i = in;}

                void print();
        private:
                int i;
};

test.cpp
#include "test.h"
#include <iostream>

using namespace std;

void base::print()
{
        cout << "i = "<<i <<endl;    //这里用printf("i = %d \n ", i);也是一样的
}

main.c
extern "C"
{
#include "test.h"    // 这里我不用extern也试过了
}
int main()
{
        base x;
        base y(7);

        x.print();
        y.print();

        return 1;
}

以及makefile
main: main.c test.o extern.o
        gcc -o main main.c test.o -lstdc++
test.o: test.cpp test.h
        gcc -c test.cpp -lstdc++

用上面这个makefile就不行,下面的就可以

main: main.c test.o extern.o
        g++ -o main main.c test.o
test.o: test.cpp test.h
        g++ -c test.cpp

但现在项目中的编译器没有g++,只有gcc,我该怎么办呢?
发表于 2004-9-12 09:38:27 | 显示全部楼层
晕,c++里可以用c,c里面不能用c++。
既然项目里没有g++那为什么用c++写?
 楼主| 发表于 2004-9-12 09:51:42 | 显示全部楼层
c里面不能用c++。
我记得能用吧,就是加上 extern "C"啊,难道我记错了?
不过我没有用成功
发表于 2004-9-12 10:13:43 | 显示全部楼层
那是c++里用extern来包含c的头文件
 楼主| 发表于 2004-9-12 10:51:52 | 显示全部楼层
如果我们希望C++函数能够为C 程序所用又该怎么办呢我们也可以使用extern "C"
链接指示符来使C++函数为C 程序可用例如
// 函数calc() 可以被C 程序调用
extern "C" double calc( double dparm ) { /* ... */ }
这个在c++ primer里面写的很清楚啊
发表于 2004-9-12 11:10:57 | 显示全部楼层
不懂了,《c++ preimer》没看过,功力不够。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表