在查看GCC 的警告选项时,我遇到了-Waggregate-return。
-Waggregate-return
如果定义或调用任何返回结构或联合的函数,则发出警告。(在可以返回数组的语言中,这也会引发警告。)
引发警告的小例子:
class foo{};
foo f(void){return foo{};}
int main(){}
$ g++ -std=c++0x -Waggregate-return -o main main.cpp
main.cpp:在函数'foo f()'中:
main.cpp:2:5:警告:函数返回一个聚合[-Waggregate-返回]
另一个不会引起警告的小例子:
#include <string>
std::string f(void){return "test";}
int main(){}
使用 -Waggregate-return 有什么好处?
为什么有人要被警告这一点?
另外,std::string 不是一个类吗?-为什么我不警告第二个示例中的“返回的聚合”?