2014-11-02 71 views
0

我目前有这样的使G ++点这个错误/警告了

std::string student::returnData() 
{ 
    // return "This is return type" ; 
    std::cout << "Hello World"; 
} 

一份声明然而,当我建立了C++项目作为这样

entry: main.o student.o 
     g++ -W -Wall -Werror -o [email protected] main.o student.o 

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

clean: 
     rm -rf *.o entry 

我不是给予警告/错误,当这种方法执行输出开始疯狂 任何建议,我可以做什么,所以我可以得到像这样的愚蠢的错误警告

+1

您是否在制作过程中将错误重定向到某些文件? – P0W 2014-11-02 06:29:02

+0

你是否有'student.o'的规则,或者你在使用隐式规则吗? – juanchopanza 2014-11-02 06:49:11

+0

不,我没有学生规则.o – Rajeshwar 2014-11-02 06:50:25

回答

2

gcc会发出一个错误标志-Wall -Werror。问题是您没有针对目标student.o的规则,并且隐式规则不使用任何警告标志。最简单的方法可能是全局设置警告标志,并让隐式规则执行它们的操作。这可以通过使用CXXFLAGS变量(或CFLAGS的C代码)来实现:

CXXFLAGS += -Wall -Werror 

这会照顾student.o并没有一个明确的规则,任何.o。请注意,此规则使student.o隐含依赖于student.cpp,student.cc or student.C。您可以添加的依赖,而无需修改食谱是这样的:

student.o: student.h # student.o now depends on student.h too 

这将导致形式

error: no return statement in function returning non-void [-Werror=return-type]

我建议增加Wextra警告标志的错误。