산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 전처리기와 매크로

C 전처리기 및 매크로

이 자습서에서는 c 전처리기를 소개하고 예제를 통해 #include, #define 및 조건부 컴파일을 사용하는 방법을 배웁니다.

<그림>

C 전처리기는 프로그램을 컴파일하기 전에 변환하는 매크로 전처리기(매크로 정의 가능)입니다. 이러한 변환에는 헤더 파일, 매크로 확장 등이 포함될 수 있습니다.

모든 전처리 지시문은 #로 시작합니다. 상징. 예를 들어,

#define PI 3.14

C 전처리기의 일반적인 용도는 다음과 같습니다.

<시간>

헤더 파일 포함:#include

#include 전처리기는 C 프로그램에 헤더 파일을 포함하는 데 사용됩니다. 예를 들어,

#include <stdio.h>

여기 stdio.h 헤더 파일입니다. #include 전처리기 지시문은 위의 줄을 stdio.h의 내용으로 바꿉니다. 헤더 파일.

이것이 #include <stdio.h>를 사용해야 하는 이유입니다. scanf()과 같은 기능을 사용하기 전에 및 printf() .

함수 선언을 포함하는 고유한 헤더 파일을 만들고 이 전처리기 지시문을 사용하여 프로그램에 포함할 수도 있습니다.

#include "my_header.h"

헤더 파일 사용에 대해 자세히 알아보려면 이 페이지를 방문하십시오.

<시간>

#define을 사용하는 매크로

매크로는 이름이 지정된 코드 조각입니다. #define을 사용하여 C에서 매크로를 정의할 수 있습니다. 전처리기 지시문.

다음은 예입니다.

#define c 299792458  // speed of light

여기서 c를 사용할 때 우리 프로그램에서는 299792458으로 대체됩니다. .

<시간>

예시 1:#define 전처리기

#include <stdio.h>
#define PI 3.1415

int main()
{
    float radius, area;
    printf("Enter the radius: ");
    scanf("%f", &radius);

    // Notice, the use of PI
    area = PI*radius*radius;

    printf("Area=%.2f",area);
    return 0;
}
<시간>

매크로와 같은 기능

함수 호출과 유사한 방식으로 작동하는 매크로를 정의할 수도 있습니다. 이것을 함수형 매크로라고 합니다. 예를 들어,

#define circleArea(r) (3.1415*(r)*(r))

프로그램이 circleArea(argument)를 만날 때마다 , (3.1415*(argument)*(argument))로 대체됩니다. .

5를 인수로 전달했다고 가정하고 다음과 같이 확장합니다.

circleArea(5) expands to (3.1415*5*5)
<시간>

예시 2:#define 전처리기 사용

#include <stdio.h>
#define PI 3.1415
#define circleArea(r) (PI*r*r)

int main() {
    float radius, area;

    printf("Enter the radius: ");
    scanf("%f", &radius);
    area = circleArea(radius);
    printf("Area = %.2f", area);

    return 0;
}

매크로 및 #define 전처리기에 대해 자세히 알아보려면 이 페이지를 방문하세요.

<시간>

조건부 컴파일

C 프로그래밍에서는 코드 블록을 포함할지 여부를 전처리기에 지시할 수 있습니다. 이를 위해 조건부 지시문을 사용할 수 있습니다.

if과 유사합니다. 한 가지 중요한 차이점이 있습니다.

if 명령문은 코드 블록이 실행되어야 하는지 여부를 확인하기 위해 실행 시간 동안 테스트되는 반면, 조건문은 실행 전에 프로그램에 코드 블록을 포함(또는 건너뛰기)하는 데 사용됩니다.

<시간>

조건부 사용

<시간>

조건부 사용 방법

조건을 사용하려면 #ifdef , #if , #defined , #else#elif 지시문이 사용됩니다.

<시간>

#ifdef 지시문

#ifdef MACRO     
   // conditional codes
#endif

여기서 조건부 코드는 MACRO인 경우에만 프로그램에 포함됩니다. 정의됩니다.

<시간>

#if, #elif 및 #else 지시문

#if expression
   // conditional codes
#endif

여기서 표현식 정수 유형의 표현식입니다(정수, 문자, 산술 표현식, 매크로 등이 될 수 있음).

조건부 코드는 expression 0이 아닌 값으로 평가됩니다.

선택적 #else 지시문은 #if과 함께 사용할 수 있습니다. 지시.

#if expression
   conditional codes if expression is non-zero
#else
   conditional if expression is 0
#endif

#if...#else에 중첩 조건을 추가할 수도 있습니다. #elif 사용

#if expression
    // conditional codes if expression is non-zero
#elif expression1
    // conditional codes if expression is non-zero
#elif expression2
    // conditional codes if expression is non-zero
#else
    // conditional if all expressions are 0
#endif
<시간>

#정의

특수 연산자 #defined 특정 매크로가 정의되었는지 여부를 테스트하는 데 사용됩니다. #if와 함께 자주 사용됩니다. 지시.

#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048
  // codes
<시간>

사전 정의된 매크로

다음은 C 프로그래밍에서 미리 정의된 몇 가지 매크로입니다.

매크로
__DATE__ 현재 날짜를 포함하는 문자열
__FILE__ 파일 이름을 포함하는 문자열
__LINE__ 현재 줄 번호를 나타내는 정수
__STDC__ ANSI 표준 C를 따르는 경우 값은 0이 아닌 정수입니다.
__TIME__ 현재 날짜를 포함하는 문자열입니다.
<시간>

예제 3:__TIME__을 사용하여 현재 시간 가져오기

다음 프로그램은 __TIME__를 사용하여 현재 시간을 출력합니다. 매크로.

#include <stdio.h>
int main()
{
   printf("Current time: %s",__TIME__);   
}

출력

Current time: 19:54:39
<시간>

권장 자료


C 언어

  1. R, L 및 C 요약
  2. C# 키워드 및 식별자
  3. C# 클래스 및 개체
  4. C# 추상 클래스 및 메서드
  5. C# 부분 클래스 및 부분 메서드
  6. C# 봉인된 클래스 및 메서드
  7. C# 전처리기 지시문
  8. C 키워드 및 식별자
  9. C - 상수 및 리터럴
  10. C - 입력 및 출력