noname02
메크로 함수의 사용 본문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> #define PLUS(a,b,c) printf(#a "+" #b "+" #c "= %d\n",a+b+c) #define TIMES(a,b,c) printf(#a "*" #b "*" #c "= %d\n",a*b*c) int main(void) { int a,b,c; printf("정수 3개 입력: "); scanf_s("%d %d %d",&a,&b,&c); PLUS(a,b,c); TIMES(a,b,c); return 0; } | cs |
예상으로는 1+2+3= 6, 1*2*3=6 이렇게 출력되어야 하지만, 실제로는 그렇지 않았다.
#define 선언은 단순 치환인데, 여기서 대체되는 영역에 들어가있는 #(문자열로 인식)은 컴파일 되는 소스코드의 영향을 받는 것이라는 것을 알게 되었다.
즉 사용자의 입력에 영향을 받는것이 아닌, 메크로함수 선언시에 그 선언되는 소스에 영향을 받는것이다.
'Study > C' 카테고리의 다른 글
main함수의 인자 (0) | 2015.04.02 |
---|---|
파일 관련 함수 (0) | 2015.04.02 |
#pragma once와 #ifndef (0) | 2015.04.01 |
삼항연산자(조건연산자) (0) | 2015.04.01 |
scanf_s 함수 (0) | 2015.04.01 |
Comments