logo

C의 매크로와 그 유형

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. 매크로는 재귀적일 수 있나요?

답변:

아니요, 매크로는 재귀적일 수 없습니다. 매크로가 재귀적으로 되면 정의는 자체를 참조하므로 전처리 중에 무한 루프가 발생합니다.