用patch打补丁的方式可以替代宏实现相应功能??

项目代码中要为不同客户定制不能功能,第一想法是用宏来区分各个不同客户,
老大却叫我用patch打补丁的方式,没使用过这种方式,是不是这样的,先拷贝一份原始代码,假设要改成A项目的,就直接在原始代码里面添加实现A功能的代码,也不用宏了,添加完之后用diff -Naur 原始原件夹 A项目文件夹 >patchA,这样产生一个补丁文件,如果要编译A项目文件,只需要在原始文件上线patch < patchA 然后就可以编译了,这种方式和用宏相比有优点吗?还请各位指教,谢谢