[19] 메크로


[19] 메크로

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <stdio.h> #define F1(X) X*X #define F2(X) ((X)*(X)) #define F3(X) ((X)*X) int main(void) { int i = 1; int j = 2; int k = 3; int s; s = F1(i + j) + F2(i - j) + F3(i + k); printf("%d",s); return 0; } Colored by Color Scripter cs 출력 결과 : 13 매크로 함수는 모든 함수 식을 괄호로 감싸지 않으면 위험하다는 것입니다. 예를 들면,#define square(x) x * x 라는 매크로 함수가 정의합니다. 사용자가 4의 제곱을 출력하는 의도로 x에 2을 넣으면 printf("%d", square( 2 + 2 ); 출력되어 나온 값은 의도했던 16이 아닌 8이 됩니다. 2 + 2 * 2 + 2로 계산하기 때문입니다. F1(i + j)...



원문링크 : [19] 메크로