C函数中的自我赋值

Lev*_*viX 1 c legacy gcc qnx

将一些遗留C代码从QNX(Photon C编译器)移植到Linux(GCC).在几个地方,我看到这样的代码:

void process_data(char key, char *data)
{
    int i;

    /* Required for compilation */
    i=i;
    key=key;
    data=data;

    ...
}
Run Code Online (Sandbox Code Playgroud)

显然,这个代码不是编译所必需的,它什么都不做.

我的问题是你为什么要这样做呢?

Som*_*ame 5

这将删除有关未引用变量的编译警告/错误.通常这样的东西可以通过#pragmas或更具表现力的形式完成,例如宏:#define unused_var(x) (x)=(x)