伙计我是初级程序员,需要帮助。我正在处理位于此处的任务的第A部分:http://cs.binghamton.edu/~sgreene/cs240-2010f/labs/lab2.html
但是我在编译程序时遇到了问题。请告诉我在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 :(得分: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 :(得分: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
答案 2 :(得分:1)
您不会使用';'终止TenStrings类在TenStrings.h的最后,这就是错误。
答案 3 :(得分:0)
你在课堂声明结尾处遗漏了一个分号。
答案 4 :(得分:0)
我认为你在课堂定义的最后忘记了一个分号。
/*tenstrings.h*/
#ifndef TENSTRNGS
#define TENSTRNGS
class TenStrings
{
public:
// Default Constructor
TenStrings();
}; // <--- !!!!
#endif
答案 5 :(得分: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