C++ 为什么在编译c++;带有-O3标志函数的代码是否生成错误的输出?

C++ 为什么在编译c++;带有-O3标志函数的代码是否生成错误的输出?,c++,g++,compiler-optimization,C++,G++,Compiler Optimization,当我在主函数中写 Function fun; fun.AddName("string1"); std::cout << fun.GetNumberOfIndeks(); 功能乐趣; fun.AddName(“string1”); std::cout这是您的函数: std::size_t Function::GetNumberOfIndeks() { vp_nazwy_indeksow_.size(); } 我统计将导致未定义行为的零返回语句 如果您的编译器没有

当我在主函数中写

  Function fun;
  fun.AddName("string1");
  std::cout << fun.GetNumberOfIndeks();
功能乐趣;
fun.AddName(“string1”);
std::cout这是您的函数:

std::size_t Function::GetNumberOfIndeks() {
    vp_nazwy_indeksow_.size();
}
我统计将导致未定义行为的零返回语句

如果您的编译器没有就此发出警告或出错,则您的编译器是垃圾,应更换为更好的编译器。以下是您的函数:

std::size_t Function::GetNumberOfIndeks() {
    vp_nazwy_indeksow_.size();
}
我统计将导致未定义行为的零返回语句


如果您的编译器没有对此发出警告或出错,那么您的编译器就是垃圾,应该换一个更好的。

如果您没有向我们展示一半的代码,并且您展示的代码包含基本语法错误,如缺少分号,您希望我们如何回答此问题?为了清晰起见,我没有展示所有代码。。我还从类函数中剪切了一些方法。对不起,表格有误,清晰度很好。但是你剪得太多了。请贴一张。把它擦掉。第一件事。将“-Wall-Werror”添加到您的编译器标志中。如果您不向我们显示一半的代码,并且您显示的代码包含基本语法错误,如缺少分号,您希望我们如何回答此问题?为了清楚起见,我不显示所有代码。。我还从类函数中剪切了一些方法。对不起,表格有误,清晰度很好。但是你剪得太多了。请贴一张。把它擦掉。第一件事。将“-Wall-Werror”添加到编译器标志中。谢谢!!!。我尝试使用命令>g++-4.9-std=c++11 Function.cpp main.cpp或>g++-4.8-std=c++11 Function.cpp main.cpp编译上述简单代码,编译器不会告诉我任何缺少返回语句的情况。奇怪的事情。我强烈建议使用
-Wall-Werror
。gcc 4.8将提供带有thos标志的错误。谢谢我尝试使用命令>g++-4.9-std=c++11 Function.cpp main.cpp或>g++-4.8-std=c++11 Function.cpp main.cpp编译上述简单代码,编译器不会告诉我任何缺少返回语句的情况。奇怪的事情。我强烈建议使用
-Wall-Werror
。gcc 4.8将提供带有thos标志的错误。
std::size_t Function::GetNumberOfIndeks() {
    vp_nazwy_indeksow_.size();
}