1)函數調用是在程序運行時處理的,在棧中分配內存單元。而宏代換則是在編譯前進行的,在代換時並不分配內存單元,不進行值的傳遞,也沒有“返回值”的概念。
2)函數調用時,先求出實參表達式的值,然後賦值給形參。而使用帶參的宏只是進行簡單的字符代換。
3)對函數中的形參和實參都要定義類型。而宏不存在類型問題。
4)宏代換不佔用運行時間,只佔用編譯時間;而函數調用則佔用運行時間(分配單元,保留現場,參數傳遞,值返回等)
1)函數調用是在程序運行時處理的,在棧中分配內存單元。而宏代換則是在編譯前進行的,在代換時並不分配內存單元,不進行值的傳遞,也沒有“返回值”的概念。
2)函數調用時,先求出實參表達式的值,然後賦值給形參。而使用帶參的宏只是進行簡單的字符代換。
3)對函數中的形參和實參都要定義類型。而宏不存在類型問題。
4)宏代換不佔用運行時間,只佔用編譯時間;而函數調用則佔用運行時間(分配單元,保留現場,參數傳遞,值返回等)
好怕自己又搞混,還忘記,寫下來吧,忘記了,還能來看看 unorder_map template < class Key, // unordered_map::key_type class
->和.的區別 -> : 指針 訪問類成員 . : 對象 訪問類成員 舉個小例子,以便我理解: class student { public: int name; char sex; } stud