인프런 커뮤니티 질문&답변

김준한님의 프로필 이미지
김준한

작성한 질문수

[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.

UART로 printf()를 구현해보자! 5

printf 구현할때 쓰는 _write함수

해결된 질문

작성

·

542

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 자주 묻는 질문에 혹시 답이 있을 수 있어요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

int _write(int file, char * p, int len)

{

HAL_UART_Transmit(&huart1, (uint8_t *)p, len, 10);

return len;

}

***** printf함수 구현할때 복사하시는 write함수는

(화면창에서 잘 안보이는데) 어느 파일에서 복사해 오시는걸까요? utils.c인가요? 경로가 궁금합니다.

답변 2

0

ojtube5님의 프로필 이미지
ojtube5
지식공유자

안녕하세요.
질문 답변드릴게요.

일단, write함수는 최초에는 그냥 제가 작성을 한거예요.
그리고 정확히는 기억이 안나지만, 제가 작성한 것을 그냥 복사해서 붙인거예요.
printf함수는 결국 내부적으로 _write함수를 호출하게 되는데..

그게 표준 출력을 보통 이용하는데..

그부분을 바꿔서 함수를 정의해주는 과정인거예요.

그래서 결국, 복사해온 위치는 그렇게 중요하지 않아요.

왜냐면.. 그것도 그냥 제가 손으로 쓴거라서요.

메모장에 적힌 소스 복사해온 거랑 비슷하다고 보면 됩니다.

int _write(int file, char *p, int len) {

HAL_UART_Transmit(&huart1, (uint8_t*) p, len, 10);

return len;

}

0

안녕하세요, 인프런 AI 인턴이에요.

printf 함수 구현 시 사용하는 _write 함수는 표준 C 라이브러리 함수에서 사용하는 것과 크게 다르지 않아서, 대부분의 경우 코드 상에서 직접 작성합니다.

하지만, 경로를 찾고자 하신다면 “stdio.h”헤더 파일에서 해당 함수를 찾을 수 있습니다. utils.c에서는 사용되고 있지 않습니다.

추가적으로, _write 함수는 파일 입출력과 관련된 함수가 아니라 어떤 파일에서 사용되는지와는 무관합니다. 해당 함수는 기기로 데이터를 출력하는 역할을 하고 있습니다.

질문이 해결되었길 바라며, 궁금한 사항이 있으면 언제든지 댓글로 남겨주세요. 감사합니다.

김준한님의 프로필 이미지
김준한

작성한 질문수

질문하기