ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5주차 수업후 과제
    카테고리 없음 2025. 4. 14. 16:34

    모든 사진 출처는 smlie han의 C언어 교재

     

    전처리기는 일반적으로 컴파일하기 전 프로그림에 대한 일련의 작업을 수행

    일반적으로 main 함수 외부에 작성

    모든 전처리기는 #기호를 명령어 앞에 붙이며 마지막 문장의 끝을 나타내는 세미콜론 기호를 사용하지 않음

     

     

    define문

    매크로 상수,매크로 함수를 만들 때 사용 

     

    매크로명(매크로 상수명):

    매크로 또는 매크로 상수는 프로그램 전체에서 하나의 기호 상수를 다른이름으로 대치시키도록 전처리기에게 알려줌

    매크로명은 모두 대문자,단어 사이는 언더스코어를 사용

     

    매크로 함수(function-like macro)

    매크로명 다음에 괄호가 오고 괄호 안에는 매개변수

    치환리스트의 매개변수들은 부작용 방지를 위해 일일이 괄호로 묶어 줌

    매개변수의 자료형의 관계 없이 하나의 매크로 함수로 구현이 가능하다는 장점이있음

     

    #pragma

    컴파일러 기능을 지정하는 전처리기

    모든 c 컴파일러에서 동작하는 것은 아님

    GCC4.0이상에서 동작

    MSVC++에서는 동작

     

     

    #include문

    파일을프로그램에 포함시키고자 할때 사용한다

    각종 라이브러리 함수의 프로토타입,이나 구조체의 데이터 형 선언등이 들어있는 헤더 파일을 프로그램에

    포함시키고자 할 때 많이사용

    <> 사용 시 이미 있는 표준 헤더파일을 포함시킬때 사용

    " " 사용 시 표준 헤더 파일이 아닌 프로그래머가 만든 파일을 포함 시킬때 사용

    대부분의 입출력 함수들은 stdio.h 헤더 파일에 포함되어 있음

     

    조건부 컴파일

    #if~#endif

    해당 부분을 컴파일할 것인지 하지 않을 것인지를 판단하는 처리기

    #ifdef~#endif

    해당 매크로가 미리 정의되어 있으면 나열된 문장을 컴파일

     

    #ifndef~#endif

    해당 매크로가 미리 정의되어 있지 않을 때 나열된 문장을 컴파일

     

    그외 전처리기

    #은 매크로 함수의 매개변수를 문자열로 만듦

     

    ##은 두 개의 토큰을 결합시킴

     

    미리 정의된 매크로(predefined macro)

    프로그래머를 위하여 컴파일러가 미리 제공하는 매크로

     

     

    실전문제

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #define avg(a,b,c,d) ( ((a) + (b) + (c) + (d)) / 4.0 )
    int main(void)
    {
    int kor, eng, mat, sic, total;
    char name[10];
    printf("이름을 입력 받으세요 => ");
    gets_s(name, sizeof(name));
    printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
    printf("┃ 총점과 평균을 구하는 프로그램입니다. ┃\n");
    printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n\n");
    printf("국어 점수를 입력하고 Enter를 누르세요 => ");
    scanf("%d", &kor);
    printf("영어 점수를 입력하고 Enter를 누르세요 => ");
    scanf("%d", &eng);
    printf("수학 점수를 입력하고 Enter를 누르세요 => ");
    scanf("%d", &mat);
    printf("과학 점수를 입력하고 Enter를 누르세요 => ");
    scanf("%d", &sic);
    total = kor + eng + mat + sic;
    printf("\n당신의 총점은 %d이고, 평균은 %.2f입니다.\n",
    total, avg(kor, eng, mat, sic));
    printf("지금은 %s이고, 제 이름은 %s입니다\n",__TIMESTAMP__, name);
    return 0;
    }
Designed by Tistory.