[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