2012-03-24 3 views
0

왜 다음 코드가 Lvalue required error를보고합니까 ?? 그리고 우리는 어떻게 배열과 배열의 요소의 수를 인수로 받아들이고 배열의 요소를 출력하는 매크로를 작성할 수 있습니까 ??매크로에 Lvalue 필수 오류가 발생했습니다.

#define arr(b) printf("%d",b++);\ 
       printf("%d",b); 


int main() 
{ 
    arr(5); 
} 
+0

가 '직장'을하지 않는 것을 무시 안에 모든 괄호로 :

그래서 문제는 의미는 어쩌면 5 = 5 + 1

이 작업을 수행하고자 작성하지 않습니다이다 매크로 정의! 'arr (6 * 3)'으로 "호출"되었다고 가정하십시오. ... #define arr (b) printf ("% d", (b) ++); printf ("% d", b); ' – pmg

+0

알았어 .. 알았어 .. 누군가가 질문의 다른 부분에 대답 해 줄 수 있니? – user1232138

답변

1
매크로

그 일부가 유효하지 C. b+1 대신 b++의 사용을 고려 인 5++으로 확장하기 때문에. 매크로를 확장하면

4

, 다음 얻을 : 오류를 얻을 수 있도록

int main() 
{ 
    printf("%d",5++); 
    printf("%d",5); 
} 

당신은 상수 5를 후행 수 없습니다.

매크로는 기능이 아닙니다. 왼쪽에

void arr(int b) { 
    printf("%d",b++); 
    printf("%d",b); 
} 
+3

+1 "함수를 원하면 함수를 작성하십시오". –

1

첫 번째 리터 좌변 에서 스탠드 : 당신이 그것을 함수처럼 행동하려면, 단순히 기능을합니다.

왼쪽 값만 할당 할 수 있습니다.

x ++을 쓸 때는 x = x + 1을 의미합니다 (또한 값을 얻음). ...

int x = 5; 
arr(x); 
관련 문제