我要复活一个
old project
,实际上是第一个跨
Refactoring Rubicon
.
我们已经确定,由于宏在语义上比C函数丰富得多,因此没有通用的转换方法
函数的宏。但宏通常只是直接的顺序C代码,出于某种原因被实现为宏。
在这种情况下,主要是将宏参数转换为函数参数语义。
我希望有人能有一个想法,或方法,或指针,对一些事情是一个有点一般模式如何做到这一点。如果它创建了很多额外的间接寻址,那就好了,一旦我把它放到一个函数中,我就可以模拟它并重构成一个更简单的形式。
if (ccc >= ffin) { \
(bbb)->next = ccc; \
if ((bbb)->isAtEOF || getCharBuf(bbb) == 0) { \
cch = -1; \
(bbb)->isAtEOF = true; \
goto endOfFile; \
} else { \
ccc = (bbb)->next; ffin = (bbb)->end; \
cch = * ((unsigned char*)ccc); ccc ++; \
} \
} else { \
cch = * ((unsigned char*)ccc); ccc++; \
} \
}
char *fn;
char *ccc;
char *ffin;
CharacterBuffer *iBuf;
GetChar(fn[i],ccc,ffin,iBuf);
(是的,我知道,我在执行救援任务,对吧……)