c語言中,宏和函數的區別
一、代碼長度:宏是完全替換,插入到程序裡使得代碼變長;
函數代碼是只出現在一個地方,使用時則去那裡調用。
二、執行速度:宏更快一些,因為在預編譯階段都已完成;
函數則慢一點,因為需要調用以及返回(壓棧/出棧)額外時間。
三、操作符優先級:宏有時要少加括號而導致計算邏輯出錯;
函數最後只將值返回來,結果容易預測。
四、參數求值:宏每次都要計算;
函數只需要計算一次,之後多次調用並不會導致多次求值而出錯。
五、參數類型:宏不關心類型,只要參數操作合法就可以;
函數類型要一致,不同類型則需要不同函數。