끄적끄적

반응형

매크로를 만들 때만 사용할 수 있는 지시어가 있는데, 바로 ##과 \이다.


##은 함수와 같은 매크로에서만 사용하는 것으로 두가지 인수를 연결시켜 버리는 기능을 한다.

예를 들어

#define MACRO(a, b) a##b

이렇게 매크로를 만들었다고 하자. 프로그램에서 이 매크로를

a = MACRO(First, Last);

이렇게 사용했다면 실제로는 두 인수 First와 Last가 연결되어

a = FirstLast;

이렇게 되는 것이다.

 

\는 매크로의 내용이 너무 길 때 여러줄에 쓰기 위해 필요한 것이다. 줄 맨 끝에 \를 붙여 주면 그 아래 줄에 계속 연결하여 쓸 수 있게 된다.

예를 들어

#define MACRO(a, b, c) a = b + c; printf("%d\n", a); a = b - c; printf("%d\n", a)

이런 매크로가 있다고 하자. 이건 \를 서서 다음과 같이 쓰면 보기도 쉽고 만들기도 쉽다.

#define MACRO(a, b, c) a = b + c; \

printf("%d\n", a); \

a = b - c; \

printf("%d\n", a)

 

 

첫 번째, #x

#define Test(x) printf(#x " = %d\n", x);

#x는 문자열이다.

Text(x)에서 넘어온 x값을 문자열로 바꿔준다.


예)

#include <stdio.h>


#define Test(x) printf(#x " = %d\n", x); 


void main()

{

    int num = 10;


    Test(num - 5);


결과: num - 5 = 5

참고: printf("", "") 사용 가능하다. ,는 있어도 되고 없어도 된다.



두 번째, ##x

#define Test(number) printf("%c\n", ch[1##number])

##x는 앞문자에 넘어온 number을 붙여준다.


#include <stdio.h> 

#include <string.h>


#define Test(number) printf("%c\n", ch[1##number])


void main() 

    char ch[30] = "T_T My mistake sorry sorry" ;


    Test(5); 


결과: ch[15]의 내용인 s

반응형
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]