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;
    }

      

  • 相关阅读:
    一个程序员的负罪感
    【软件安装记录篇】本地虚拟机Centos7快速安装MySQL
    三分钟熟悉进制转换与位运算
    Base64 编码原理
    Java 注解
    数据结构之链表-动图演示
    数据结构之红黑树-动图演示(下)
    数据结构之红黑树-动图演示(上)
    通过TreeMap 和 冒泡算法对JSON 进行排序
    Quartz 之 windowService
  • 原文地址:https://www.cnblogs.com/yemaomao/p/12470426.html
Copyright © 2011-2022 走看看