宏定义在定义后,相应的#undefine语句之间起作用。编译是先进行宏替换,而后进行实质编译,因此宏名不应该与实际变量名相同。一般变量名用小写字母,宏名用大写字母,加以区别。这里,宏定义名是BWT,与BW不同,没有问题。