noname02

메크로 함수의 사용 본문

Study/C

메크로 함수의 사용

kimtaku 2015. 4. 1. 15:22


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