C预处理器在每个语句后插入代码

时间:2016-07-08 17:26:06

标签: c c-preprocessor

我认为这是不可能的,但我之前已经看过很多疯狂的预处理器魔法,所以我想我会问。预处理器可以在两点之间的每个语句之后插入代码吗?

例如,我有以下代码:

// ...
dy2 = dy2 + (rand()%3) - 1;                                swapTask();
if (dy2 < D2Upper) dy2 = D2Upper;                          swapTask();
if (dy2 > D2Lower) dy2 = D2Lower;                          swapTask();
dy2 = (dy2+9) >= dy1 ? dy1-9 : dy2;                        swapTask();

if (direction2 > 0)
{
    memcpy(&pk[dy2+0][direction2+7], "_", 1);              swapTask();
    memcpy(&pk[dy2+1][direction2+6], "/o\\", 3);           swapTask();
    memcpy(&pk[dy2+2][direction2+4], "</ _<", 5);          swapTask();
    memcpy(&pk[dy2+3][direction2+3], "</ /", 4);           swapTask();
    memcpy(&pk[dy2+4][direction2+2], "</ ==x", 6);         swapTask();
    memcpy(&pk[dy2+5][direction2+3], "/  \\", 4);          swapTask();
    memcpy(&pk[dy2+6][direction2+2], "//)__)", 6);         swapTask();
    memcpy(&pk[dy2+7][direction2+0], "<<< \\_ \\_", 9);    swapTask();
    if (++direction2 > D2Right)
        direction2 = -direction2;                          swapTask();
}
// ...

我需要在每个声明后调用swapTask();。随着时间的推移,这会变得很麻烦(特别是如果我希望它看起来很漂亮并且对齐)。

最初我想过以编程方式将它添加到每一行,但这显然会打破无块if语句。然后我想在每个分号后添加它,但这显然打破了for语句。是否有任何预处理器,编译器或其他魔法方法可以在每行之后调用它?感谢。

0 个答案:

没有答案