预定义宏本身是按宏的流程被编译的,除了在是在编译代码之前就被定义以外和普通宏没有区别。关键字是程序语法相关的东西,有些接近于标识符,些和标识符完全不同。并且,要知道,宏的优先级大于关键字。#define if for你就可以写if (int a = 0; i < 10; i++)