子程序调用与宏定义的异同