ka373

C 언어] 매크로 사용 시 알아 두면 좋을 점 몇가지 본문

06. C

C 언어] 매크로 사용 시 알아 두면 좋을 점 몇가지

ka373 2019. 10. 3. 07:28

p.115~]
■ 매크로
#define지시자는 특정 대상을 정의함으로써 전처리기가 이를 특별하게 다루도록 하고 싶을 때 사용

이렇게 정의된 특정 대상을 매크로(macro)라 함
매크로는 전처리기 과정에서 정의된 내용으로 확장된다. 이렇게 확장되기 때문에 '매크로'라고 부른다.

 

 

p.119~] 

매크로 함수

문자열 접합
#define DUP(MESSAGE) MESSAGE MESSAGE
여기서 인수로 주어지는 MESSAGE는 문자열 리터럴(string literal)이어야 함
문자열 리터럴을 나란히 쓰면 컴파일러가 알아서 리터럴을 붙여준다.
이렇게 두 개의 문자열을 붙여주는 연산을 문자열 접합(string concatenation) 연산이라고 한다.
C언어에서는 문자열 리터럴에 대해서는 자동으로 문자열 접합을 수행한다.
리터럴이 아닌 문자열에 대해서는 다른 방법을 사용해야 한다.

 


p.120~]

매크로 정의가 길 때
백슬래시를 이용하여 여러 줄에 표시 가능
전처리기는 매크로 정의 끝에 백슬래시가 있으면 다음 라인에 정의가 계속되는 것으로 간주
마지막 라인에는 백슬래시 없어도ㅇㅋ

 


김p.236~]
매크로끼리도 서로 참조 가능

단 참조되는 매크로가 먼저 선언되어 있어야 함
#define WIDTH 5
#define HEIGHT 8
#define AREA (WIDTH * HEIGHT)

 

 

인터넷 참고]
토큰 연결 연산자
## 연산자
좌변의 토큰과 우변의 토큰 결합

 


기타]
#define FORTEST
#define FORTEST(ss) ss ss
=> 얘 실행 됐음
다만 C는 함수 이름도 그냥 쓸 수 있으니까 문제 생길 수도?

 

 

_____________________________________________

참고 문헌:

 

1. 처음 만나는 C 프로그래밍

발행일: 2007.7.10 초판 1쇄, 2008.2.1 초판 2괘

지은이: 우균, 창병모

발행처: (주)교보문고

 

2. C 언어 트레이닝

초판발행: 2017년 12월 04일

지은이: 김상형

펴낸곳: 한빛아카데미(주)

 

 

참고 사이트:

 

https://araikuma.tistory.com/588

 

 

 

_____________________________________________
가변인자 매크로
https://cpprefjp.github.io/lang/cpp11/variadic_macros.html

함수 오버로딩 비슷하게
https://m.blog.naver.com/PostView.nhn?blogId=chhh92&logNo=220856082530&proxyReferer=https%3A%2F%2Fwww.google.com%2F
http://www.digipine.com/index.php?mid=clan&document_srl=518



#define SWAP(a, b, type) do { \
    type temp; \
    temp = a;  \
    a = b;     \
    b = temp;  \
} while (0)
https://dojang.io/mod/page/view.php?id=654


https://onecellboy.tistory.com/130
http://sarghis.com/blog/802/
https://m.blog.naver.com/PostView.nhn?blogId=sharonichoya&logNo=220506521054&proxyReferer=https%3A%2F%2Fwww.google.com%2F
https://ejhcho.tistory.com/entry/define%EC%97%90-%EA%B4%80%ED%95%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0
https://eslife.tistory.com/159
https://onecellboy.tistory.com/130
https://dojang.io/mod/page/view.php?id=663

 

http://www.epnc.co.kr/news/articleView.html?idxno=78804

'06. C' 카테고리의 다른 글

C언어에서 구조체 선언하는 몇가지 방법들  (0) 2019.10.02
Comments