2013-01-06 3 views
0

매개 변수를 매크로 이름에 저장 한 다음 다른 매크로 함수에 사용하고 싶습니다.매크로 이름에 변수를 저장하고 많은 매크로 함수에 사용하십시오.

내가 그

#define MACRO1(X) MACRO_NAME = X 

#define MACRO2(Y) Y = MACRO_NAME; 

1int main() 
{ 
    int a = 2, b; 

    MACRO1(a); 
    ... 
    MACRO2(b) 

} 

같은 것을 찾고 있어요 그것을 할 수 있습니까? 그리고 그것을하는 정확한 방법은 무엇입니까?

내가 위에서 준 코드는 내가

+0

마음에 떠오르는 질문은 : 왜? 당신이 더 잘하려는 것을 설명하기 위해 현실적인 유스 케이스를 보여줄 수 있습니까? – Mat

+0

아니요, 고맙게도 불가능하며 올바른 방법이 없습니다. 이것은 최악의 종류의 매크로 남용입니다. – meagar

답변

1

사전 프로세서는 텍스트 교체하지 만, 그것은하지 않습니다 "실행"코드를 원하는 단지 예입니다. 모든 작업은 정의 된 매크로 (및 #include 지시문 등)에 따라 코드를 변환 한 다음 컴파일러에게 넘깁니다.

귀하의 위의 예는 컴파일러가 볼 것을 의미 : MACRO_NAME라는 어떤 변수가 없기 때문에

int a = 2, b; 

MACRO_NAME = a; 
... 
b = MACRO_NAME; 

이 구축되지 않습니다. 귀하의 질문은 약간 불분명합니다. 당신이하고 싶은 것이 무엇이고, 왜 그 것인지 분명히해야합니다.

+0

전처리 기는 모든 장소에서 MACRO_NAME에 대한 텍스트 대체가 호출되고 MACRO_NAME 값이 다른 매크로에 할당되기를 원합니다. – MOHAMED

0

다음과 같이 코드를 변경해야합니다. MACRO_NAME을 int 변수로 선언하십시오. 따라서 첫 번째 매크로 호출에 대한 인라인 대체는 "MACRO_NAME = a"와 같은 코드를 발생시키고 문제없이 컴파일됩니다.

#define MACRO1(X) MACRO_NAME = X 
#define MACRO2(Y) Y = MACRO_NAME; 

int main() { 
    int a = 2, b; 
    int MACRO_NAME; 
    MACRO1(a); 
    MACRO2(b) 
}