bs_write1 bs_write bs_write_ue bs_write_se bs_write_te 宏在rdo.c的开头定义rdo.c又被include在analyse.c的开头,功能上:只改变写入数据大小,估计是用来估计rdo中精确cost的. 并且没有被undefine.但是并没有被analyse中或者之中函数用到.
同名静态内联函数在bs.h中定义,文件又被include到common.h中又被无数文件include,要不怎么说是common呢.危险是居然也被analyse include了.于是我们很多错误出在analyse里,将函数视为宏定义去代替他了
经过实验,在c++中,宏在本文件和相关文件内有效,在宏定义文件内调用子函数内无效.并且同一文件include几个文件,内部定义同名func和macro不冲突
c至少在被同意文件包含的文件中冲突是有效的,从编译上猜想,在其他文件中应该无所谓