我寫了一個已經正常工作的編譯器。它檢查所有非void方法是否至少有一個return語句,但它不檢查非void方法中的所有代碼路徑是否返回一個值。因此,舉例來說,如果我有以下代碼:如何檢查一個方法總是返回一個值
int function(bool a)
{
if(a){
return 5;
}
}
這將彙編「精」,如果是假的,控制將脫落的功能和繼續執行無論是作用下定義。
是否有一些算法可用於執行此檢查,以便我始終知道某個方法是否始終返回值?或者我需要重新發明輪子?
對於相當多的編譯器技巧,已經有可用的算法,包括推薦的內部表示法等。 http://en.wikipedia.org/wiki/Data-flow_analysis閱讀相同語言的現有編譯器的註釋源代碼(看起來像'C'在你的案例中,所以選擇一個http://stackoverflow.com/questions/ 584714/is-an-interpreter-for-c)可能是[自我回答](http://stackoverflow.com/help/self-answer)你不清楚和廣泛的問題的最佳方式 – xmojmr 2014-11-05 16:57:56