시나공 IT
험에
오는 것만
부한다!

통합검색

1:1 질문하기

제목 질문이요
자격증 정보처리 기사 필기
도서/쪽 페이지 2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편 [기본서] / 0쪽
등록일 2020-04-02 조회 329
작성자 경*현
라이브러리하고 API의 차이점이 뭔가요?
예를 들어서 설명해주세요
printf는 api고 stdio.h는 라이브러리라고 하는데
api를 통해 라이브러리를 사용한다고 하면
prinf를 통해 stdio.h를 사용할수있도록 하는건 아니지않나요? 오히려 stdio.h를 통해서 printf를 사용하는거 아닌가요?
첨부파일
  • 첨부파일 없음
제목 답변입니다.
등록일 2020-04-02

안녕하세요 길벗수험서 운영팀입니다.

 

api의 의미를 잘 생각해보세요.

application programming interface의 interface는 접속기를 의미합니다. 

 

stdio.h 헤더파일을 예로 들으셨으니 그대로 계속 설명해보죠.

stdio.h에는 다양한 기능을 내장하고 있습니다. 그 중 출력을 담당하는 기능이 있죠.

이 기능을 수행하기 위한 인터페이스(API) 중 하나가 printf문입니다.

 

printf문을 통해 stdio.h에 내장된 여러 기능 중 출력기능을 활용할 수 있는 것이죠.

기능의 주체를 어디에 두느냐에 따라 회원님의 말씀이 맞을 수도 있습니다.

"stdio.h를 통해 printf문을 사용한다."

'명령문'을 통해 '라이브러리'에 포함된 기능을 수행하느냐에 중점을 두느냐, '명령문'의 기능을 수행하기 위해 '라이브러리'를 호출하냐에 중점을 두느냐 중 후자에 중점을 둔다면 위의 언급은 참(true)에 해당합니다.

기본 명령어부터 학습하시는 분들에게는 전자보다는 후자가 더 쉽게 와닿기 때문에 이와 같이 설명하는 경우가 잦습니다.

(printf문이든 scanf든 그저 원하는 기능을 수행하기 위한 명령문 중 하나일 뿐이죠. 사실 근본적으로 본다면 '내가 원하는 기능을 수행하기 위해 해당 기능이 포함된 '라이브러리'를 불러와 그 기능에 대한 'api(명령어)'를 사용한다. 정도가 되겠습니다.)

 

사용자정의함수를 생각해보세요. func 라는 사용자정의함수를 만들어 사용했을 때, 우리는 func에 대해 사전에 정의를 내립니다. 정의부에서 이 기능을 수행하지 func(); 라는 호출문 자체가 해당 기능을 내포하고 있지 않음을 압니다. 그저 정의부의 코드를 수행하라, 정도의 일종의 포인터 역할만을 수행할 뿐이죠.

 

음.. 두서없이 말만 길어진 느낌인데, 제대로 전달이 되었는지 모르겠습니다.

추가로 이해되지 않는 부분이 있어 질문주시면 다시 답변드리도록 하겠습니다.

 

행복한 하루되세요 :)

첨부파일
  • 첨부파일 없음
제목 질문이요
등록일 2020-04-02
작성자 경*현

그러면 api는 사용 방법만을정의해놓은 것이고

라이브러리는 사용방법을 가지고 실행되는것 이라고

이해해도 되나요?

첨부파일
  • 첨부파일 없음
제목 답변입니다.
등록일 2020-04-02

안녕하세요 길벗수험서 운영팀입니다.

 

예, 정확합니다.

 

행복한 하루되세요 :)

첨부파일
  • 첨부파일 없음