QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 605|回复: 2

高手请进。

[复制链接]
发表于 2004-10-20 22:22:10 | 显示全部楼层 |阅读模式
我刚开始在linux下编程。
写了个小程序,可编译不过去。
不知道为什么?
有三个文件,myclass.h, myclass.cpp ,main.cpp;
myclass.h和myclass.cpp分别是CMyClass类的头文件和源文件。
main.cpp是个包含main函数的文件。
makefile文件如下:
[code:1]
test: main.o myclass.o
        @echo ">>>Linking test...<<<"
        g++ -g -o test main.o myclass.o
main.o:main.cpp myclass.h
        @echo ">>>>Compiling main.cpp<<<<"
        g++ -g -o main.o main.cpp myclass.h
myclass.o:myclass.cpp myclass.h
        @echo ">>>>Compling myclass.cpp<<<<"
        g++ -g -o myclass.o myclass.cpp myclass.h
.PHONY:clean
clean:
        -rm test main.o myclass.o
[/code:1]

编译后出现:
g++ -g -o main.o main.cpp myclass.h
g++:compilation of header file requested.
make:***[main.o] Error1.
=====================
附源文件:
[code]
#ifndef MYCLASS_H_
#define MYCLASS_H_
class CMyClass
{
        public:
                CMyClass();
                CMyClass(int i);
                ~CMyClass();
        private:
                int data;
        public:
                void show();
};
#endif
[/code]
[code:1]
#include "myclass.h"
#include <iostream>
CMyClass::CMyClass()
{
        data =10;
}
CMyClass::CMyClass(int i)
{
        data = i;
}
CMyClass::~CMyClass()
{
}
void CMyClass::show()
{
        std::cout<<data<<std::endl;
}
[/code:1]
[code:1]
#include "myclass.h"
#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{
        int iRetCode = 0;
        CMyClass** ppClass = new (CMyClass*)[3];
        for(int i = 0;i<3;i++)
        {
                ppClass[i]=new CMyClass(i+100);
                ppClass[i]->show();
                delete ppClass[i];
        }
        delete ppClass;
        return iRetCode;
}
[/code:1]
发表于 2004-10-20 22:28:35 | 显示全部楼层
不要在gcc命令行里加头文件,要加就用-include
回复

使用道具 举报

 楼主| 发表于 2004-10-21 13:25:30 | 显示全部楼层
谢谢 了!
修改后的makefile如下:
[code:1]
test: main.o myclass.o
        @echo ">>>Linking test...<<<"
        g++ -g -o test main.o myclass.o
main.o:main.cpp
        @echo ">>>>Compiling main.cpp<<<<"
        g++ -g -o main.o -c main.cpp
myclass.o:myclass.cpp myclass.h
        @echo ">>>>Compling myclass.cpp<<<<"
        g++ -g -o myclass.o -c myclass.cpp
.PHONY:clean
clean:
        -rm test main.o myclass.o


[/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 07:43 , Processed in 0.043353 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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