2012-12-18 38 views
1

将QNX(Photon C编译器)中的一些遗留C代码移植到Linux(GCC)。在几个地方我看到这样的代码:函数中的C自我赋值

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

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

    ... 
} 

很明显,这段代码不需要编译,它什么也不做。

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

+1

要关闭编译器,警告使用未初始化的变量,也许。但那是纯粹的无耻罪恶。 –

+2

也许他们正在构建警告,将未使用的变量/参数和警告视为错误。 – Michael

+1

编写这样的代码来闭嘴警告就像用一块电子胶带盖住“检查引擎”指示灯。警告是有原因的。我会删除该代码,编译它,然后看看会发生什么。让我们知道,你会吗? –

回答

5

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

+1

GCC也支持'__attribute __((__ unused __))'。有关更多信息,请参阅http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Variable-Attributes.html。 (一个 –

+0

我更喜欢这个宏:'#define unused_var(x)(void)(x);'使用Qt – benjarobin

+0

我敢打赌有几十种方法来做到这一点,但不错的建议:) – SomeWittyUsername