1、預處理器直接對宏進行文本替換
    2、宏使用時的參數不會進行求值和運算
    3、預處理器不會對宏定義進行語法檢查,宏定義時出現的語法錯誤只能被編譯器檢測
    4、宏定義的效率高於函數調用(宏不佔用內存,函數佔用內存)
    5、宏的使用會帶來一定的副作用
    6、#define定義的宏可以出現在程序的任意位置,#define定義之後的代碼都可以使用這個宏
    7、#define 表達式的使用類似函數調用,但是宏比函數功能更強大,比函數更容易出錯
    8、宏表達式中不能出現遞歸定義二、代碼測試(ubuntu 10  gcc平台)