What are weak functions and what are their uses? I am using a stm32f429 micro controller
<p>Wikipedia says:</p>

<blockquote>
  <p>A weak symbol denotes a specially annotated symbol during linking of
  Executable and Linkable Format (ELF) object files. By default, without
  any annotation, a symbol in an object file is strong. During linking,
  a strong symbol can override a weak symbol of the same name. In
  contrast, two strong symbols that share a name yield a link error
  during link-time. When linking a binary executable, a weakly declared
  symbol does not need a definition. In comparison, (by default) a
  declared strong symbol without a definition triggers an undefined
  symbol link error. Weak symbols are not mentioned by C or C++ language
  standards; as such, inserting them into code is not very portable.
  Even if two platforms support the same or similar syntax for marking
  symbols as weak, the semantics may differ in subtle points, e.g.
  whether weak symbols during dynamic linking at runtime lose their
  semantics or not.</p>
</blockquote>

<p>What are the weak functions and what are their uses? I am using an stm32f429 micro controller. There are some weak functions in the library. But I can't understand, what they and their use!</p>

<p>I searched about it on google but did't get a satisfactory answer.  </p>