✅ 오늘의 문제 : 사칙연산
사칙연산이 가능한 함수 (더하기, 빼기, 곱하기, 나누기) 가 정의되어 있는 "calc.h" 헤더파일을 만들어서 사용해 보세요
(코뮤니티 모각코 과정 中 출제되어 푼 문제입니다.)
헤더파일이란?
앞서 예제들에서 사용했던
#include <stdio.h>
에서 stdio.h도 헤더파일!
왜 사용하나?
C언어는 절차지향적 언어임
그렇다보니 함수를 사용할 때 매우 불편...
main 함수를 맨 밑으로 내리면
프로그램에 대한 전체적인 구조 파악이 힘듦
선언부만 앞으로 떼어내어 함수가 코드 내 존재한다고 알려줄 수도 있지만
함수의 개수가 많아지게되면...🤦♀️
이런 문제점을 해결하기위해 헤더파일 사용!
헤더파일 = "선언부"들을 모아둔 파일이라고 생각
(예제를 보면서 이해하시길...!)
#pragma once
VS2019 환경에서 새로운 헤더파일을 생성 시
자동으로 입력되는 전처리기!
어떠한 코드나 헤더파일이 다른 코드나 헤더에서 include 될때,
중복되어 복사되는 것을 방지하는 기능!!
#include는 컴파일 시점에, 해당 파일 내의 코드를
내 코드 안에 '붙여넣기'하는 전처리기임
근데!! 예를 들어 내가 stdio.h 헤더 파일을 2번 include 하면?
(멍청한 실수라고 생각할 수 있지만...
내가 main.c 안에 stdio.h를 include하고
누가 제공해준 test.h 를 include 했는데
test.h의 코드인 test.c 코드 안에 stdio.h가 include 되어 있다면
중복되는 일이 발생할 수 있음!)
그럼 심각한 충돌이 일어날 수 있기 때문에,
이를 방지하고,
"해당 파일을 두 번 읽지 않겠다."는 뜻으로
#pragma once 라는 전처리기를 사용함!!
//Pragma 전처리기는 Visual Studio 종속적인 키워드라
다른 IDE에서는 기능하지 X
#ifndef
그렇기 때문에,
보다 보편적인 코드를 만들고 싶다면
#ifndef ____
#define ____
.
.
.
#endif
를 사용한다!
문제 풀이
// main.c
#define _CRT_SECURE_NO_WARNINGS
#include "calc.h"
int main() {
int a, b;
scanf("%d", &a);
scanf("%d", &b);
calculus(a, b);
return 0;
}
// calc.h
#ifndef CALC
#define CALC
#include <stdio.h>
void calculus(int a, int b);
#endif // !CALC
// calc.c
#include "calc.h"
void calculus(int a, int b) {
printf("%d + %d = %d\n", a, b, a + b);
printf("%d - %d = %d\n", a, b, a - b);
printf("%d * %d = %d\n", a, b, a * b);
printf("%d / %d = %d\n", a, b, a / b);
}
'ProgrammingLanguage > C언어' 카테고리의 다른 글
C언어 | 콘솔창 출력위치 변경, GotoXY, COORD, SetConsoleCursorPosition, GetStdHandle(STD_OUTPUT_HANDLE), windows.h (2) | 2021.02.21 |
---|---|
C언어 | 문자열 함수, 버퍼, 버퍼 비우기 예제 (0) | 2021.02.19 |
C언어 | 동적 메모리 할당 예제(2) (0) | 2021.02.18 |
C언어 | 동적 메모리 할당 예제 (0) | 2021.02.16 |
C언어 | continue문 예제 (0) | 2021.02.14 |