[Ffmpeg-devel] printf format specifiers and 64-bit machines

Aurelien Jacobs aurel
Mon Dec 12 00:42:12 CET 2005


On Sun, 11 Dec 2005 15:26:00 -0800
Mike Melanson <mike at multimedia.cx> wrote:

> M?ns Rullg?rd wrote:
> > I compiled ffmpeg on my Alpha today, and noticed a large number of
> > warnings about %lld or %Ld used with int64_t arguments, as int64_t is
> > a plain long on Alpha (both long and long long are 64 bits).  Would it
> > be acceptable to replace all of these with the proper PRId64 and
> > related macros?  As these are already used in one or two places, I
> > don't see any problem with it.
> 
> 	What is the solution exactly? Can you explain this PRId64 thing? I see 
> the same issue all the time on my AMD64.

On 32 bits system, you need to use %lld to display an int64_t. But on 64 bits
systems, you simply need %ld to display an int64_t. For that purpose, C99
defines some macros, such as PRId64, which expand to the right string needed
to display an int64_t on the host system (ie. either "%ld" or "%lld").

IMHO, using PRId64 is the right thing to do. And as it's already used
at some places, it certainly can't generate troubles to add some more.
If you do this search and replace effort, this would probably be welcomed.

Aurel





More information about the ffmpeg-devel mailing list