[Ffmpeg-devel] stdint.h and inttypes.h for non-C99 compilers

Steve Lhomme steve.lhomme
Wed Dec 13 14:36:57 CET 2006


Alexander Chemeris wrote:
> Hello,
> 
> On 12/13/06, M?ns Rullg?rd <mru at inprovide.com> wrote:
>> Alexander Chemeris said:
>> > On 12/13/06, Steve Lhomme <steve.lhomme at free.fr> wrote:
>> >> @@ -42,6 +42,10 @@
>> >>
>> >>  #include <stdint.h>
>> >>
>> >> +#ifdef __cplusplus
>> >> +extern "C" {
>> >> +#endif
>> >> +
>> >>  // 7.8 Format conversion of integer types
>> >>
>> >>  typedef struct {
>> >> @@ -268,7 +272,7 @@
>> >>
>> >>  // This is modified version of div() function from Microsoft's 
>> div.c found
>> >>  // in %MSVC.NET%\crt\src\div.c
>> >> -_inline imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
>> >> +_inline imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom)
>> >>  {
>> >>     imaxdiv_t result;
>> >>
>> >> @@ -292,5 +296,8 @@
>> >>  #define wcstoimax _wcstoi64
>> >>  #define wcstoumax _wcstoui64
>> >>
>> >> +#ifdef __cplusplus
>> >> +}
>> >> +#endif
>> >>
>> >>  #endif // _MSC_INTTYPES_H_ ]
>> > Why do you change this?
>> > Is __cdecl is not enough?
>>
>> You're both wrong.  The __cdecl modifier tells the compiler to use the
>> standard C calling convention (the alternative being __stdcall for Pascal
>> calling convention).  Specifying extern "C" turns off C++ name mangling.
>> For an inline function neither of these have any real effect.  You should
>> probably make that function static though.
> 
> The right way is to supply .c file with this function. :) But I want 
> keep all in
> .h files. For now I implemented INLINE_IMAXDIV switch to select inline or
> static implementation.
> I think it would be good to create 'external' option too. I.e. 
> EXTERNAL_IMAXDIV
> will disable inline code and enable it in imaxdiv.c.

IMO inline is just fine. If you want to make something fancier, just use 
a define to specify the level of inline you want (always or let the 
compiler decide).

Steve





More information about the ffmpeg-devel mailing list