[记录一个bug]ffmpeg加入timestamp.h编译出错[已解决]

由于代码新增了av_ts2str()函数,提示需要包含timestamp.h文件,添加之后报错

error: expected ‘)’ before ‘PRId64’

原来这个宏定义给c用的,C++要用它,就要定义一个__STDC_FORMAT_MACROS宏显示打开它。

c++使用PRID64,需要两步:

包含头文件:<inttypes.h>
定义宏:#define __STDC_FORMAT_MACROS,也可以通过编译时加-D__STDC_FORMAT_MACROS,或者在包含文件之前定义这个宏。

编译还报错...

timestamp.h:54:70: error: taking address of temporary array
 #define av_ts2str(ts) av_ts_make_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts)

不允许使用这种临时变量,好吧,网上查有一种方法是:c与c++混编,可能会出现指针强制转化,编译通不过的问题,网上有说我以上遇到的问题解决方案是加上 CXXFLAGS=-fpermissive。但是该选项会将不一致代码的诊断从错误降级为警告。最好不要使用,因为会降低对于代码检查的严格性。

好麻烦,因为我只是来打印调试,av_ts2str的作用只是转成字符串,那我不转一样也可以用%lld来输出,直接就解决了。orz

或者一定要用的话,可以直接用av_ts_mak_string(),塞一个buf给它即可。

一个小函数的使用还是要经过脑子思考为什么要用到它,尤其像第三方库提供的函数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值