2011-02-05 117 views
0

伙计们我是一个开始的程序员,需要帮助。我正在处理A部分工作,仅限于此处的任务:http://cs.binghamton.edu/~sgreene/cs240-2010f/labs/lab2.html简单的C++程序帮助编译

但是,我在编译我的程序时遇到了问题。请告诉我在我的makefile和cpp文件中做了什么错误!下面是我的文件:

# CS240 Lab2 Makefile 

all: lab2 

lab2: lab2.o 
    g++ -Wall lab2.o -o lab2 

lab2.o: main.cpp 
    g++ -Wall -c main.cpp -o lab2.o 

lab2.o: tenstrings.cpp 
    g++ -Wall -c tenstrings.cpp -o lab2.o 

/*tenstrings.h*/ 
#ifndef TENSTRNGS 
#define TENSTRNGS 

class TenStrings 
{ 
public: 
    // Default Constructor 
    TenStrings(); 
} 
#endif 

/* tenstrings.cpp */ 

#include "TenStrings.h" 

//Default Constructor 
TenStrings::TenStrings() 
{} 

/* main.cpp */ 

#include "TenStrings.h" 

int main() 
{ 
    TenStrings varTen; 
    return 0; 
} 

正如你可以看到这个心不是连一个程序,它只是为了让我开始编译,但我得到一堆错误:

________________________________________________________________________________________ 
Makefile:12: warning: overriding commands for target 'lab2.o' 
Makefile:9: warning: ignoring old commands for target 'lab2.o' 
g++ -Wall -c tenstrings.cpp -o lab2.o 
In file included from tenstrings.cpp:6: 
TenStrings.h:11:3: warning: no newline at end of file 
tenstrings.cpp:7: error: new types may not be defined in a return type 
tenstrings.cpp:7: error: return type specification for constructor invalid 
_________________________________________________________________________________________ 

在此先感谢!

+0

要使代码以固定宽度字体显示,缩进它4个空格!它会更好看! – 2011-02-05 20:21:42

+0

http://cplusplus.syntaxerrors.info/index.php?title=New_types_may_not_be_defined_in_a_return_type – THEn 2011-02-05 20:29:56

回答

1

我觉得你的makefile应该看起来更像是这样的:

all: lab2 

lab2: main.o tenstrings.o 
    g++ main.o tenstrings.o -o lab2 

main.o: main.cpp 
    g++ -Wall -c main.cpp -o main.o 

tenstrings.o: tenstrings.cpp 
    g++ -Wall -c tenstrings.cpp -o tenstrings.o 

可能会解决你的前两个错误。

+1

您还需要修复链接依赖关系和命令。 – 2011-02-05 20:29:30

+0

干杯,保罗R! – Dave 2011-02-05 20:35:50

0

您在类声明结尾缺少分号。

0

我想你在类定义的末尾忘了分号。

/*tenstrings.h*/ 
#ifndef TENSTRNGS 
#define TENSTRNGS 

class TenStrings 
{ 
public: 
    // Default Constructor 
    TenStrings(); 
}; // <--- !!!! 
#endif 
1

您需要在类声明结尾处使用分号。另外,你可以更简单地重写你的Makefile。你不需要每个文件的目标:

all: lab2 

lab2: lab2.o 
    g++ -Wall lab2.o -o lab2 

lab2.o: main.cpp tenstrings.cpp 
    g++ -Wall -o lab2.o tenstrings.cpp main.cpp 
1

你不会用';'来终止TenStrings类。最后在TenStrings.h中,这是错误。

0

您有同样的make目标定义两次。然后你不要链接项目的所有部分。这应该是这样的:

all: lab2 

lab2: lab.o lab2.o 
    g++ -Wall lab.o lab2.o -o lab2 

lab.o: main.cpp 
    g++ -Wall -c main.cpp -o lab.o 

lab2.o: tenstrings.cpp 
    g++ -Wall -c tenstrings.cpp -o lab2.o