[Ffmpeg-devel] [PATCH] Partial port of ffmpeg to MS Visual C - and a note on the inttypes.h issue

Dave Dodge dododge
Fri Feb 9 10:23:40 CET 2007


On Thu, Feb 08, 2007 at 05:18:13PM +1030, Yuri Vilmanis wrote:
> Dave Dodge wrote:
> >On Thu, Jan 25, 2007 at 06:34:54PM +1030, Yuri Vilmanis wrote:
> >>Incidentally, FFMpeg uses the following C99 features which are marked as
> >>broken or missing in gcc (see http://gcc.gnu.org/c99status.html) (these
> >>I noted off-hand - there may be others):
> >>    
> >[...]
> >  
> >> - extended integer types - stdint.h is marked missing, inttypes.h is
       ^^^^^^^^
       ^^^^^^^^

> >>marked as having library issues (I gather this because it supplies the
> >>typdefs which are meant to be in stdint.h - feel free to correct me here)
> >>    
> >
> >This has to do with _extended_ integer types, which would be
> >implementation-defined

> If you take a look at the C99 standard, you'll find under the library 

[...explanation of inttypes.h and stdint.h deleted...]

> I hope this answers your ... statement?

My point is that on the gcc C99 status page you quoted, the entry
where you seem to think it's saying stdint.h is missing (and as I note
above) has to do with EXTENDED integer types.

The term "extended integer type" has a specific meaning in C99, which
can be found in section 6.2.5.  The types "signed char", "short int",
"int", "long int", and "long long int" are not extended integer types,
they are STANDARD integer types.  An extended integer type would be
some implementation-defined integer type that is not one of the
standard types.  For example if gcc provided a 1024-bit wide
"__1024int" type, that would be an extended integer type.  C99 allows
such types to exist, and has several requirements for how they must
behave if they are present in the implementation.

If extended integer types do exist, then they indeed may be mentioned
in stdint.h.  For example there could be an int1024_t type that is
typedef'd to __1024int.  A more realistic example might be if the
architecture has no native 32-bit type (there's more than one real
system of that sort), but decides to provide an int32_t anyway by
using an extended integer type.

According to gcc's documentation (as of 4.1.1) it doesn't actually
have any extended integer types.  Therefore it is strange that the C99
status page says these types are missing, because there aren't any
such types to _be_ missing.  Either the C99 status page is wrong, or
the gcc documentation is wrong.  And in either case it would have
little to do with how ffmpeg uses stdint.h.

                                                  -Dave Dodge




More information about the ffmpeg-devel mailing list