C에서는 매크로 매크로 값으로 대체되는 프로그램의 코드 조각입니다. 매크로는 다음과 같이 정의됩니다. #정의하다 지령. 컴파일러는 매크로 이름을 발견할 때마다 해당 이름을 매크로 정의로 대체합니다. 매크로 정의는 세미콜론( ; ).
C의 매크로 예
다음은 C에서 매크로 사용을 설명하는 프로그램입니다.
실시예 1
아래 예에서는 매크로를 사용하여 LIMIT를 정의하는 방법을 보여줍니다.
씨
// C program to illustrate macros> #include> // Macro definition> #define LIMIT 5> // Driver Code> int> main()> {> >// Print the value of macro defined> >printf>(>'The value of LIMIT'> >' is %d'>,> >LIMIT);> >return> 0;> }> |
>
>산출
The value of LIMIT is 5>
실시예 2
아래 예에서는 매크로를 사용하여 직사각형의 면적을 찾는 방법을 보여줍니다.
씨
// C program to illustrate macros> #include> // Macro definition> #define AREA(l, b) (l * b)> // Driver Code> int> main()> {> >// Given lengths l1 and l2> >int> l1 = 10, l2 = 5, area;> >// Find the area using macros> >area = AREA(l1, l2);> >// Print the area> >printf>(>'Area of rectangle'> >' is: %d'>,> >area);> >return> 0;> }> |
>
>산출
Area of rectangle is: 50>
설명
위 프로그램에서 컴파일러가 다음을 찾을 때마다 다음을 볼 수 있습니다. 지역(l,b) 프로그램에서는 이를 매크로 정의로 대체합니다. 즉, (l*b) . 매크로 템플릿에 전달된 값 지역(l,b) 또한 다음 진술로 대체됩니다. (l*b) . 그러므로, 지역(10, 5) 와 같을 것이다 10*5 .
C의 매크로 유형
C 언어에는 두 가지 유형의 매크로가 있습니다.
1. 객체형 매크로
객체형 매크로는 코드 조각으로 대체되는 간단한 식별자입니다. 이를 사용하는 코드의 객체처럼 보이기 때문에 객체 유사라고 합니다. 기호 이름을 상수로 표시되는 숫자/변수로 바꾸는 데 널리 사용됩니다.
예
아래 예는 간단한 매크로, 즉 객체형 매크로를 보여줍니다.
씨
// C program to illustrate macros> #include> // Macro definition> #define DATE 31> // Driver Code> int> main()> {> >// Print the message> >printf>(>'Lockdown will be extended'> >' upto %d-MAY-2020'>,> >DATE);> >return> 0;> }> |
>
>산출
Lockdown will be extended upto 31-MAY-2020>
2. 체인 매크로
매크로 내부의 매크로를 체인 매크로라고 합니다. 체인 매크로에서는 먼저 상위 매크로가 확장된 다음 하위 매크로가 확장됩니다.
예
아래 프로그램은 체인 매크로의 그림입니다.
씨
// C program to illustrate macros> #include> > // Macro definition> #define INSTAGRAM FOLLOWERS> #define FOLLOWERS 138> > // Driver Code> int> main()> {> >// Print the message> >printf>(>'Geeks for Geeks have %dK'> >' followers on Instagram'>,> >INSTAGRAM);> > >return> 0;> }> |
>
>산출
Geeks for Geeks have 138K followers on Instagram>
설명:
INSTAGRAM이 먼저 확장되어 FOLLOWERS를 생산합니다. 그런 다음 확장된 매크로가 확장되어 138K의 결과를 생성합니다. 이를 매크로 연결이라고 합니다.
삼. 여러 줄 매크로
객체형 매크로는 여러 줄을 가질 수 있습니다. 따라서 여러 줄 매크로를 생성하려면 백슬래시-개행을 사용해야 합니다.
예
다음은 여러 줄 매크로의 그림입니다.
씨
// C program to illustrate macros> #include> // Multi-line Macro definition> #define ELE 1,> >2,> >3> // Driver Code> int> main()> {> >// Array arr[] with elements> >// defined in macros> >int> arr[] = { ELE };> >// Print elements> >printf>(>'Elements of Array are:
'>);> >for> (>int> i = 0; i <3; i++) {> >printf>(>'%d '>, arr[i]);> >}> >return> 0;> }> |
>
>산출
Elements of Array are: 1 2 3>
4. 함수형 매크로
이 매크로는 함수 호출과 동일합니다. 함수 이름 대신 전체 코드를 대체합니다. 매크로 이름 바로 뒤에 괄호 쌍이 필요합니다. 만약에 매크로 정의에서 매크로 이름과 괄호 사이에 공백을 넣으면 매크로가 작동하지 않습니다. .
함수형 매크로는 이름 뒤에 괄호 쌍이 있는 경우에만 길이가 늘어납니다. 이렇게 하지 않으면 함수 포인터가 실제 함수의 주소를 가져오고 구문 오류가 발생합니다.
예
아래 예는 함수형 매크로의 그림입니다.
씨
문자열을 char로 변환 java
// C program to illustrate macros> #include> // Function-like Macro definition> #define min(a, b) (((a) <(b)) ? (a) : (b))> // Driver Code> int> main()> {> >// Given two number a and b> >int> a = 18;> >int> b = 76;> >printf>(>'Minimum value between'> >' %d and %d is %d
'>,> >a, b, min(a, b));> >return> 0;> }> |
>
>산출
Minimum value between 18 and 76 is 18>
다음은 매크로에 대한 더 많은 이해를 제공하는 한 가지 예입니다.
문제: 다음을 정의하여 원의 면적을 구해야 합니다. 지역(r) 매크로.
씨
#include> #define PI 3.1416> #define AREA(r) (PI*(r)*(r))> int> main() {> >float> r = 7;>// radius of circle> > >printf>(>'Area of Circle with radius %.0f: %.3f'>, r, AREA(r));> >return> 0;> }> // This code is contributed by Susobhan Akhuli> |
>
>산출
Area of Circle with radius 7: 153.938>
결론
매크로는 단일 명령으로 실행할 수 있는 작은 코드 조각입니다. 작업을 자동화하고, 복잡한 프로세스를 단순화하고, 생산성을 향상시키는 데 사용할 수 있습니다. 그러나 매크로를 사용하면 몇 가지 단점도 있습니다. 매크로의 장점과 단점은 다음과 같습니다.
C 매크로에 대한 FAQ
Q1. 매크로의 장점은 무엇입니까?
답변:
생산성 향상: 매크로는 반복 작업을 자동화하여 시간을 절약하고 오류를 줄일 수 있습니다. 사용자 정의: 특정 요구 사항에 맞게 매크로를 사용자 정의할 수 있으므로 작업 완료 방법에 더 큰 유연성이 제공됩니다. 일관성: 매크로는 미리 결정된 일련의 지침을 따라 작업의 일관성을 보장하는 데 도움이 될 수 있습니다. 효율성: 매크로는 인간보다 작업을 더 빠르게 수행하여 전반적인 효율성을 향상시킬 수 있습니다. 사용 용이성: 매크로는 프로그래밍 지식이 거의 또는 전혀 필요하지 않고 생성 및 사용이 쉽습니다.
Q2. 매크로의 단점은 무엇입니까?
답변:
보안 위험: 매크로는 적절하게 보호되지 않거나 악성 코드를 실행하는 데 사용되는 경우 보안 위험이 될 수 있습니다. 제한된 기능: 매크로는 더 복잡한 작업을 수행하지 못하여 유용성이 제한될 수 있습니다. 호환성 문제: 매크로는 모든 소프트웨어 응용 프로그램과 호환되지 않아 유용성이 제한될 수 있습니다. 유지 관리: 매크로에는 유지 관리 및 업데이트가 필요할 수 있으며, 이는 시간과 비용이 많이 소요될 수 있습니다. 의존성: 매크로에 지나치게 의존하면 문제 해결 능력과 비판적 사고가 저하될 수 있습니다.
Q3. 매크로가 인수를 받을 수 있나요?
답변:
예, 매크로는 인수를 취할 수 있습니다. 예를 들어 MAX는 두 개의 인수(a 및 b)를 사용하고 두 인수 중 최대값을 반환하는 매크로입니다.
Q4. 매크로는 재귀적일 수 있나요?
답변:
아니요, 매크로는 재귀적일 수 없습니다. 매크로가 재귀적으로 되면 정의는 자체를 참조하므로 전처리 중에 무한 루프가 발생합니다.