VC下编译的几个小问题

From Ffmpeg工程组

Jump to: navigation, search

问题一:

下面的c语句,如何修改,可以使之在Vc下编译通过?
return 0.0/0.0;

对应解答:

return INT64_MAX;
或者return 0.0;

问题二:

下面的c语句,如何修改,可以使之在Vc下编译通过?
#define tprintf(...) av_log(NULL, AV_LOG_DEBUG, __VA_ARGS__)
中间的三个小点不支持。。。也就是不支持变长参数

对应解答:

#ifdef __GNUC__
    #define tprintf(...) {}
#else
    static void tprintf(char *msg,...){}
#endif

问题三:

句法修改的问题
AVInputFormat mpegts_demuxer = 
   {
   "mpegts",
   "MPEG2 transport stream format",
   sizeof(MpegTSContext),
   mpegts_probe,
   mpegts_read_header,
   mpegts_read_packet,
   mpegts_read_close,
   read_seek,
   mpegts_get_pcr,
   .flags = AVFMT_SHOW_IDS,
   };

对应解答:

把该结构的其他值,都添上了,然后就直接
{
 .....
 ....
 .....
 AVFMT_SHOW_IDS
}
应该可以了。

有关该问题的讨论帖可参考ffmpeg工程组论坛中的相关讨论:

有关VC下编译的几个小问题的讨论
Personal tools