warning C4715 不是所有的控件路徑都返回值

http://blog.sina.com.cn/s/blog_438414c901008xqz.html

vector<string> hcat(const vector<string>& left, const vector<string>& right)
{
 vector<string> ret;

 string::size_type width1 = width(left) + 1;

 vector<string>::size_type i =0, j = 0;

 while( i != left.size() || j != right.size()) {
  string s;

  if(i != left.size())
   s = left[i++];

  s += string(width1 - s.size(), ' ');

  if(j != right.size())
   s += right[j++];

  ret.push_back(s);
 }
}

warning C4715 不是所有的控件路徑都返回值

忘記寫返回語句了。

 

又碰到了“warning C4715 不是所有的控件路徑都返回值”的錯誤:
原因:自定義函數使用瞭如下的形式

BOOL MyClass::GetValue()
{
if(……)
 return 0;
else if(……)
      return 1;
}

上面的函數有一個很明顯的漏洞:當if……else if…… 不包括所有的條件在內,也就是說有可能會出現條件不符合if(……),也不符合else if(……)的情況,這時候函數就不知道該返回什麼值了。
解決的辦法:讓if 和else if 包含所有的情況,函數形式寫成
BOOL MyClass::GetValue()
{
if(……)
 return 0;
else (……)
      return 1;
}

或者,類似下面的形式
BOOL MyClass::GetValue()
{
if(……)
 return 0;
 return 1;
}

當這種問題出現在返回值爲具體的數據值和指值時,將對之後的運行結果產生不穩定的不可預知的錯誤,總之後果會很嚴重。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章