#define 교체
#define 교체
Table of Contents
4
1 번 및 ##
#argument 이런 구조는 프로세서에 의해'argument'로 번역된다. 이런 번역은 다음과 같이 코드를 작성할 수 있다.
#define PRINT(FORMAT,VALUE)\
printf("the value of " #VALUE \
"is " FORMAT "
",VALUE)
PRINT("%d",x+3);
다음 출력이 발생합니다.
the value of x+3 is 25
### 구조는 서로 다른 작업을 수행하며 양쪽에 있는 기호를 하나의 기호로 연결합니다.용도 중 하나로, 분리된 텍스트 세션에서 식별자를 만들 수 있도록 매크로 정의를 허용합니다.다음 예제에서는 이러한 연결을 여러 변수 중 하나에 값을 추가합니다.
#define ADD_TO_SUM(sum_number,value)\
sum ## sum_number += value
ADD_TO_SUM(5,25)
마지막 문장은 값 25를 변수sum5에 추가합니다.이 연결은 반드시 합법적인 표지부를 만들어야 한다는 것을 주의해라.그렇지 않으면 그 결과는 정의되지 않은 것이다.
2 매크로 및 함수
매크로는 두 표현식 중 비교적 큰 것을 찾는 등 간단한 계산을 수행하는 데 매우 빈번하게 사용된다.
#define MAX(a,b) ((a)>(b)?(a):(b))
왜 함수를 쓰지 않고 이 임무를 완성합니까?두 가지 이유가 있다. 첫째, 함수를 호출하고 되돌아오는 코드가 실제 이 소형 계산 작업을 수행하는 코드보다 더 클 가능성이 높기 때문에 매크로를 사용하는 것이 함수를 사용하는 것보다 프로그램의 규모와 속도에 있어서 더 뛰어나다.
그러나 더욱 중요한 것은 함수의 매개 변수는 반드시 특정한 유형으로 성명해야 하기 때문에 유형에 적합한 표현식에서만 사용할 수 있다.번식, 위의 이 매크로는 정형, 장정형 등 및 기타 >조작부호로 값의 크기를 비교할 수 있는 모든 유형에 사용할 수 있다.다시 말하면 매크로는 유형과 무관하다.
함수로는 수행할 수 없는 작업도 있습니다.
#define MALLOC(n,type)\
((type*)malloc((n)*sizeof(type)))
Date: 2014-11-24T11:12+0800
Author: kirchhoff
Org version 7.9.3f with Emacs version 24 Validate XHTML 1.0