C++ 中使用 PRId64

同一份代码,Ubuntu 14.04.1 编译没有问题,centos 7 上编译提示错误:

error: expected ‘)’ before ‘PRId64’

这里两个地址说得很清楚了:

http://www.cprogramdevelop.com/4787258/

http://blog.csdn.net/win_lin/article/details/7912693 (google 排第一,其他很多一样的博客都没有注明转载,google真是良心啊)

看了下第二个地址博客发布于 2012-08-27。

在centos 7 上查看 /usr/include/inttypes.h,果然有这样一行:

#if !defined __cplusplus || defined __STDC_FORMAT_MACROS

但为什么 Ubuntu 上直接就可以呢?同样查看 inttypes.h ,就没有这行限制。

查看文件头部的copyright声明,centos 7 到2012,Ubuntu 已经是2014。

查看gcc版本,centos 7 是 4.8.3, 20140911, Ubuntu 4.8.4.

别的发行版不行而 Ubuntu 可以,这样的情况遇到好几次了。

我可以理解 centos 作为服务器偏保守,但我真的很佩服 Ubuntu 的激进。

时间: 2024-10-06 22:31:22

C++ 中使用 PRId64的相关文章

C++中正确使用PRId64

int64_t用来表示64位整数,在32位系统中是long long int,在64位系统中是long int,所以打印int64_t的格式化方法是: printf("%ld", value); // 64bit OS printf("%lld", value); // 32bit OS 当然有跨平台的方法: #include <inttypes.h> printf("%" PRId64 "\n", value);

C++中正确使用PRId64 (转载)

转自:http://blog.csdn.net/win_lin/article/details/7912693 例子参考高性能流媒体服务器SRS:https://github.com/winlinvip/simple-rtmp-server SRS中广泛使用PRId64实现32和64位系统通用. c++使用PRID64,需要两步: 包含头文件:<inttypes.h> 定义宏:__STDC_FORMAT_MACROS,可以通过编译时加-D__STDC_FORMAT_MACROS,或者在包含文件

transcode_step()在转码过程中对pts、dts、duration的处理

对pts.dts.duration的处理主要集中在两大函数里面 1.process_input()读入数据并处理,放到滤镜里面 2.reap_filters()从滤镜读出数据,处理后写入文件 process_input()中对时间的处理 获取数据包 ret = get_input_packet(ifile, &pkt);11通过这条语句实际里面调用 return av_read_frame(f->ctx, pkt);11将读取到的帧放到pkt中. 处理获取的pkt中的时间 //如果pkt.d

ffplay(2.0.1)中的音视频同步

最近在看ffmpeg相关的一些东西,以及一些播放器相关资料和代码. 然后对于ffmpeg-2.0.1版本下的ffplay进行了大概的代码阅读,其中这里把里面的音视频同步,按个人的理解,暂时在这里作个笔记. 在ffplay2.0.1版本里面,视频的刷新不再直接使用SDL里面的定时器了,而是在主的循环中event_loop中,通过调用函数refresh_loop_wait_event来等待事件, 同时在这个refresh_loop_wait_event函数里面,通过使用休眠函数av_usleep 来

(转)ffmpeg 中 av_read_frame_internal分析

作者: chenwei1983    时间: 2012-3-5 04:21 PM标题: ffmpeg 中 av_read_frame_internal分析                            原出处:http://www.chinavideo.org/viewthread.php?action=printable&tid=13846av_read_frame_internal 在ffmpeg中实现了将format格式的packet,最终转换成一帧帧的es流packet,并解析填

FFmpeg从入门到出家(HEVC在RTMP中的扩展)

由金山云视频云技术团队提供:FFmpeg从入门到出家第三季: 为推进HEVC视频编码格式在直播方案中的落地,经过CDN联盟讨论,并和主流云服务厂商达成一致,规范了HEVC在RTMP/FLV中的扩展,具体修改内容见下. 4.1 FLV规范扩展 HEVC为视频编码格式,因此对FLV规范的扩展,只集中在Video Tag,其它部分,无任何改动. 4.1.1 支持HEVC的VideoTagHeader 扩展后的VideoTagHeader如下图所示(红色字体为新增内容):图9. 支持HEVC的FLVTa

win10周年版eNSP中启动AR提示错误代码40问题

win 10操作系统中安装eNSP 1.2.00.380,一直运行正常,但在2016年11月升级win 周年版之后,启动AR时启动失败,提示错误代码40. 卸载eNSP及VirtualBox之后重装问题依旧.按照论坛和网上各种说法更新virtualbox修改虚拟网卡设置,或者重新注册都无法解决,最终多方查找终于找到解决方案. 环境:win10 周年版,eNSP 1.2.00.380,VirtualBox 4.2.8 eNSP注册后virtualbox管理器中会出现AR_Base,WLAN_AC_

css中的px、em、rem 详解

概念介绍: 1.px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选.Windows系统默认是96dpi,Apple系统默认是72dpi. 2.em(相对长度单位,相对于当前对象内文本的字体尺寸):是一个相对长度单位,最初是指字母M的宽度,故名em.现指的是字符宽度的倍数,用法类似百分比,如:0.8em, 1.2em,2em等.通常1em=16px

angularJs中关于ng-class的三种使用方式说明

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性 这里有三种方法: 第一种:通过数据的双向绑定(不推荐) 第二种:通过对象数组 第三种:通过key/value 下面简单说下这三种: 第一种:通过数据的双向绑定 实现方式: function changeClass(){   $scope.className = "change2"; } <div clas