임베디드 시스템 (Cortex M3)을 개발하고 있습니다. 일부 데이터를 장치에서 직렬 포트로 보내려면 (PC 화면에 표시하기 위해) putchar() 메서드를 사용하여 자체 함수를 사용합니다. C에서 sprintf() 대신 모든 함수가 사용됩니까? 컴파일 후 코드 크기가 너무 크다
내가 정수 또는 플로트를 보낼
, 나는 문자의 문자열로 변환하기 위해 sprintf와()를 사용하여 직렬 포트로 전송.이제 Keil uVision IDE를 사용하고 있으며 최대 32KB의 제한된 버전입니다. 다른 함수에서 sprintf()를 호출 할 때마다 컴파일 후의 코드 크기가 너무 커진 이유를 알 수 없습니다. 저는 지금 32KB를 넘어 섰고, 제 기능을 일부 변경하고 sprintf 대신 다른 것을 사용해야 만합니다!
단서가 있습니까?
런타임 라이브러리 구성 요소가 대부분의 경우 상당히 크고 느리기 때문에 'float'을 피하십시오. – glglgl
printf 패밀리는 부동 소수점을 구현하는 데 필요한 많은 양의 코드로 인해 매우 비쌉니다. 정수 printf는 작은 양이지만 여전히 값 비싸다. 임베디드 마이크로 컨트롤러 코드에서 printf()가 필요하다고 생각하십니까? 자신 만의 훨씬 저렴한 솔루션을 구현할 수 있습니다. –
또한 사용 가능한 컴파일러 공급 업체를 살펴보십시오. 종종 기능이 축소 된 C 라이브러리의 여러 가지 맛이 있습니다. 예를 들어 int를 처리하고 과학 표기법을 사용하지 않는 sprintf입니다. –