우리가 매크로 SWAP 정의 말할 수 있습니다 매크로에게 [C]를 사용하여 3 개 번호 :정렬
:#define SWAP(a,b) {\
int tmp = a; \
a = b; \
b = tmp;}\
우리는 3 개 개의 숫자를 정렬 할 필요가 SWAP을 사용하여 (다만 매크로라는 SWAP를 사용하는 다른 매크로를 쓰기)
#define SORT(a,b,c) \
(a > b) ? SWAP(a,b) : ((a > c) ? SWAP(a,c) : ((b>c) : SWAP(b,c)))
나는 다음과 같이 쓴하지만 내 코드는 몇 가지 오류 보여줍니다 : 내가 얻을
#include <stdio.h>
#define SWAP(a,b) {\
int tmp = a; \
a = b; \
b = tmp;}\
#define SORT(a,b,c) \
(a > b) ? SWAP(a,b) : ((a > c) ? SWAP(a,c) : ((b>c) : SWAP(b,c)))
int main()
{
int a = 1024, b = 7, c = 11;
printf("a = %d b = %d\n", a, b);
SWAP(a,b)
printf("a = %d b = %d\n", a, b);
printf("a = %d b = %d c = %d\n", a, b);
SORT(a,b,c)
printf("a = %d b = %d c = %d\n", a, b);
return 0;
}
오류 :
를 이(a > b) ? {
int tmp = a;
a = b;
b = tmp;
} : ((a > c) ? {
int tmp = a;
a = c;
c = tmp;
} : ((b>c) : {
int tmp = b;
b = c;
c = tmp;
}))
이 아닌 유효한 C 코드 : 각 SWAP (A, B)를 확장
(a > b) ? SWAP(a,b) : ((a > c) ? SWAP(a,c) : ((b>c) : SWAP(b,c)))
:
error: expected expression before ‘{’ token|
오류가 발생한 행은 무엇입니까? 오류는 특정 행에서옵니다. – abelenky
pre-processor 출력을 가진 소스를 쓰는 -E 옵션으로 컴파일 – suspectus
내부에 (예 :'{int tmp = a; a = b; b = tmp;}'와 같은 중괄호로 묶은 명령문을 가질 수 없습니다. * expressions * ('x? y : z'와 같은 값으로 평가되는 연산자와 다른 표현식의 그룹들) C 언어에서는 허용되지 않습니다. 만약 당신이 삼항 연산자의 사용을'if/else '문을 사용하면 매크로를 사용하여 정렬 함수를 작성하지 말라고 강력히 권할지라도 괜찮습니다. –