2014-02-10 3 views
-1

는 내가 같은 함수 이름 "ABC()"를해야 할 수도 있습니다 여러 프로젝트를 통합하는 데 필요한 처리기 다른 기능 이름과 동일한 기능

int abc() 
{ 
    // Some code here... 
} 

등의 기능을 정의합니다. 내가 대신 코드에 라인으로 라인을 변경하는이를 대체하는 매크로 같은 것을 가지고

#if defined PREPROCESSOR1 
    int A_abc() 
#else 
    int abc() 
#endif 
    { 
     // Some code here... 
    } 

이 가능와 같은 전처리를하고 싶습니다?

+0

은'') ('ABC를 함수에 인수를 A' 있습니까? – DevNull

+0

또는'a'가 전역 변수입니까? – DevNull

답변

0

당신은 할 수 있습니다 :

#ifdef PREPROCESSOR1 
#define ABC A_abc 
#else 
#define ABC abc 
#endif 

int ABC() 
{ 
    // Some code here... 
} 
+0

'a'가 정의되었지만 초기화되지 않았습니다. 이 코드는 'a'를위한 공간이 할당 된 메모리에있는 모든 쓰레기를 출력합니다. – DevNull

+0

@Dogbert 여기서 함수의 본문이 관련이 있다고 생각하지 않습니다. – aldo

+0

@aldo 동의하지 않습니다. 이 함수는 변수를 선언하고 값을 증가 시키지만 초기화하지는 않습니다. 즉, 변수에 대한 모든 연산이 정의되지 않은 또는 안전하지 않은 동작의 큰 집합을 형성 함을 의미합니다. 또한 변수'a'는 함수 본문에 정의되어 있으며 전역 변수 나 함수 인수가 아니기 때문에 결과가 정의되지 않았 음을 보증합니다. – DevNull