int _write 함수 관련 문의
568
작성한 질문수 2
안녕하세요. 임베디드 초보입니다. 강의 잘듣고있습니다.
한가지 궁금한점이 있는데, _write 함수를 정의하시고, 이를 호출하는 부분이 없는데 어떻게 printf("Hello\n")만으로 len사이즈까지 글자를 출력하는지요...
정의하신 _write 함수 호출이 없는 데 문자열 출력이 되는 것이 이해가 가지 않습니다.
다시 말해, printf함수로만 써서는(호출해서는) hello가 터미널로 출력이 되지 않는데 _write 함수 정의를 통해 호출없이 어떻게 터미널로 출력이 되는지요?..
질문의 요지가 이해가 안가실 수도 있는데, _write 함수를 호출하지 않은데 정의를 해준 것이 근본적인 의문입니다.
답변 1
1
안녕하세요 답이 좀 늦었습니다.
질문에 대한 알림이 안떠서 확인이 늦었네요.
좋은 질문 입니다.
우리가 익히 알고있는 C언어의 문법으로는 해석이 불가능해 보이지만, IDE 마다 특수한 기능을 포함하고 있어서, _write() 함수 호출 없이도 자동으로 호출되는 거라고 이해하시면 됩니다.
TrueSTUDIO나 CubeIDE의 경우는 printf() 호출 시 그 안에서 _write()가 자동으로 호출됩니다.
따라서 우리가 명시적으로 _write() 를 호출하지 않아도 되는 것이죠.
(또한 사용자가 직접 printf() 함수 내부의 코드를 변경할 수 없습니다.)
_write() 함수를 정의하는 것을 출력 장치 재지정(?) 이라고 합니다. 영어로는 redirection 한다고 합니다.
이 redirection 하는 방법은 IDE마다 다른데, 만약 KEIL이나 IAR 같은 다른 IDE를 사용하신다면 다른 방식으로 정의해주어야 합니다.
redirection 하는 방법은 IDE의 매뉴얼에 소개되어있습니다.
이해가 좀 되셨는지 모르겠네요!
PWM 실시간 변경 시 ARR이 아닌 PSC 레지스터를 제어해야 하는 이유
0
161
1
클럭설정
0
320
1
SDIO구현
0
428
1
CANable 구매 후 STM32F407V_EduBoard_Ver1.22와 연결 뒤 통신이 안됩니다.
0
305
1
CAN 통신에 사용되는 CANable 보드의 펌웨어
0
1480
2
서보모터 질문
0
344
2
서보모터 제어
0
498
1
IrDA 통신
0
294
1
파일 생성이 되지 않습니다
0
326
1
파일이 없습니다.
0
357
1
사용 프로그램이 맞나요?
0
362
4
선택사항을 실행할 수 없으며 최신 실행 작업이 없습니다. 질문
0
541
1
TrueSTUDIO가 뜨지 않습니다.
0
594
1
pwm 주기 강의 질문드립니다.
0
519
1
가감속 테이블
0
411
1
개인정의 질문
0
352
1
임베디드 공부
0
560
1
새로운 모듈 새로운 라이브러리
0
354
1
포트 설정 문제
0
466
1
서보모터
0
275
1
예제코드, 회로도 요청드립니다.
0
238
1
보드 구매후 구매확정 하였습니다.
0
225
1
예제코드 및 회로도 요청 건
0
267
1
PWM 생성 주기에 따른 차이점은 어떤것이 있나요?
0
576
1





