從下述的範例程式,可以明顯的看出多個重複的程式段,在程式的撰寫上,雖然說複製貼上在程式撰寫時較為方便且簡單,但是重複的程式段卻是燃燒記憶體的主因之一,若是將其簡化即可大幅度的減少記憶體的使用量。
以程式範例來做說明 :
// 單一變數運算
int main(void)
{
int var1=10; // 初始值
var1 *= 2; // 變數運算
var1 += 1; //
var1 *= 4; //
var1 *= 2; // 重複程式段 1
var1 += 1; //
var1 *= 4; //
var1 *= 2; // 重複程式段 2
var1 += 1; //
var1 *= 4; //
var1 *= 2; // 重複程式段 3
var1 += 1; //
var1 *= 4; //
while(1);
}
從下述程式段可以發現原本重複的程式段,已經副程式化。在撰寫程式時,初學者多以複製貼上進行撰寫,在記憶體的使用上十分浪費。但了解了以下的概念後,ROM的記憶體則可以節省很多,使用次數越多節省越多。
改善後的程式段 :
int sub_1(int invar) ; // 宣告副程式
// 單一變數進、出副程式
int main(void)
{
int var1=10; // 初始值
var1 = sub_1( var1 ) ; // 代入副程式
var1 = sub_1( var1 ) ; // 代入副程式
var1 = sub_1( var1 ) ; // 代入副程式
var1 = sub_1( var1 ) ; // 代入副程式
while(1);
}
// 將重複的程式段,以副程式包起。(節省記憶體)
int sub_1(int invar)
{
invar *= 2;
invar += 1;
invar *= 4;
return invar;
}