19.1 Smart IO Routines
The library code associated with the print and scan families of IO functions can be customized by the compiler with each compilation, based on compiler options and how you use these functions in your project. This can reduce the amount of redundant library code being linked into the program image, hence can reduce the program memory and data memory used by a program.
printf | fprintf | snprintf | sprintf | 
vfprintf | vprintf | vsnprintf | vsprintf | 
scanf | fscanf | sscanf | 
vfscanf | vscanf | vsscanf | 
When this feature is enabled, the compiler analyzes your project's C source code every time you build, searching for calls to any of the smart IO functions. The conversion specifications present in the format strings are collated across all calls, and their presence triggers inclusion of library routines with the associated functionality in the program image output.
printf("input is: %d\n", input);when smart IO
         is enabled, the compiler will note that only the %d placeholder has been
         used by the printf function in the program, and the linked library routine
         defining printf will thus contain a basic functionality that can at least
         handle the printing of decimal integers. If the following call was added to the
         program:printf("input is: %f\n", ratio);the compiler will then see
         that both the %d and %f placeholders were used by
            printf. The linked library routine would then have additional
         functionality to ensure that all the requirements of the program can be met.Specific details of how the smart IO feature operates for this compiler are detailed in the
         following section. The syntax and usage of all IO functions, which are part of the
            <stdio.h> header, are described in the Microchip Unified
            Standard Library Reference Guide.
