zoukankan      html  css  js  c++  java
  • Macros之PRId64

    访问特定宽度整型数据时常会遇到类似PRId32、PRId64。比较常见的如流媒体处理中的时间戳。

    以下的这些宏可扩展为基于特定宽度的整型类型包含相应printf或者scanf格式化的字符串

    头文件:<inttypes.h>

    下面以一个使用中的例子来真切的认识PRId64这种宏的使用

    例子1

    #include <stdio.h> 
    #include <stdint.h>
    #include <inttypes.h>   /* strtoimax, PRIdMAX, SCNdMAX */
    
    int main ()
    {
      char buffer[80];
      intmax_t foo,bar;
    
      printf ("Please, enter a number: ");
      fgets (buffer,80,stdin);
      foo = strtoimax (buffer,NULL,10);
    
      printf ("Thanks for entering %" PRIdMAX ".
    ", foo);
    
      printf ("Please, enter another number: ");
      scanf ("%" SCNdMAX,&bar);
    
      printf ("%" PRIdMAX " by %" PRIdMAX " is %" PRIdMAX, foo, bar, foo*bar);
    
      return 0;
    }  

    结果输出:

    例子2: 打印时间戳

     //代码摘自Android开源

    std::unique_ptr<AutoConditionLock> AutoConditionLock::waitAndAcquire(
                const std::shared_ptr<WaitableMutexWrapper>& manager, nsecs_t waitTime) {
      if (manager == nullptr || manager->mMutex == nullptr) {
        return std::unique_ptr<AutoConditionLock>{nullptr};
      }
      std::unique_ptr<AutoConditionLock> scopedLock(new AutoConditionLock(manager));
      nsecs_t failTime = systemTime(SYSTEM_TIME_MONOTONIC) + waitTime;
      while (manager->mState) {
        status_t ret = manager->mCondition.waitRelative(*(manager->mMutex), waitTime);
        if (ret != NO_ERROR) {
          return std::unique_ptr<AutoConditionLock>{nullptr};
        }
        waitTime = failTime - systemTime(SYSTEM_TIME_MONOTONIC);
      }
      //这里是自己加的调试输出,获取lock的等待时间
      ALOGE("%s[%d] acquire mServiceLock wait:%" PRId64 "ns", __func__, __LINE__, waitTime);
      manager->mState = true;
    scopedLock->mAcquired = true;
      return scopedLock;
    }

      

  • 相关阅读:
    U盘修复
    在tomcat中配置jdk的不同版本
    集​群​t​o​m​c​a​t​+​a​p​a​c​h​e​配​置​文​档
    如何挂自己的web项目(免费拥有自己的网站及域名)
    JQuery对表格进行排序
    JQuery中对各种域进行隐藏和显示操作
    大文件批量上传断点续传文件秒传
    web 开发常用字符串表达式匹配
    spring 工具类大集合
    spring 是如何注入对象的和bean 创建过程分析
  • 原文地址:https://www.cnblogs.com/yemaomao/p/12470426.html
Copyright © 2011-2022 走看看