2012-12-18 4 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 s 또는 매크로와 같이 더 표현적인 형식으로 이루어집니다. #define unused_var(x) (x)=(x)

+1

GCC는'__attribute __ (__ unused __))'도 지원합니다. 자세한 내용은 http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Variable-Attributes.html을 참조하십시오. ( –

+0

나는이 매크로를 선호한다 : Qt – benjarobin

+0

에 의해 사용되는'#define unused_var (x) (void) (x);) 나는 좋은 제안을하기 위해 수십 가지 방법을 걸었다. :) – SomeWittyUsername