inconsistent printf() warning printing size_t

Joel Sherrill joel.sherrill@oarcorp.com
Fri Mar 13 18:20:00 GMT 2015


Hi

This code gives a warning on some targets and not on others.
Specifically, it gives a warning where size_t is long unsigned int
but not unsigned int. If you use %ld, it inverts when the warning
occurs. Any suggestions on how to portably print a size_t and
not get a warning?

==============
#include <stdio.h>

void f( size_t x)
{
  printf( "%d\n", x );
}
===============

This script is used to do the analysis:

===================
for t in arm-rtems4.11 avr-rtems4.11 bfin-rtems4.11 h8300-rtems4.11 \
  i386-rtems4.11 lm32-rtems4.11 m32c-rtems4.11 m32r-rtems4.11 \
  m68k-rtems4.11 mips-rtems4.11 nios2-rtems4.11 \
  powerpc-rtems4.11 sh-rtems4.11 sparc64-rtems4.11 sparc-rtems4.11 \
  v850-rtems4.11
do
  echo === ${t}
  ${t}-gcc -dM -E - </dev/null | grep UINTPTR_TYPE
  ${t}-gcc -Wall -Wextra -c f.c
done
===================

-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel.sherrill@OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985




More information about the Newlib mailing list