亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何打印uint64_t?失敗:“格式中的虛假結尾'%'”

如何打印uint64_t?失?。?ldquo;格式中的虛假結尾'%'”

C++ C
臨摹微笑 2019-10-06 15:13:51
我寫了一個非常簡單的printf uint64_t測試代碼:#include <inttypes.h>#include <stdio.h>int main(){  uint64_t ui64 = 90;  printf("test uint64_t : %" PRIu64 "\n", ui64);  return 0;}我使用ubuntu 11.10(64位)和gcc版本4.6.1對其進行編譯,但失敗了:main.cpp: In function ‘int main()’:main.cpp:9:30: error: expected ‘)’ before ‘PRIu64’main.cpp:9:47: warning: spurious trailing ‘%’ in format [-Wformat]
查看完整描述

3 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

ISO C99標準規定,只有在明確要求時才必須定義這些宏。


#define __STDC_FORMAT_MACROS

#include <inttypes.h>


... now PRIu64 will work


查看完整回答
反對 回復 2019-10-06
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

在Centos 5.xi下編譯memcached時遇到了同樣的問題。


解決方案是至少將gcc和g ++升級到版本4.4。


編譯之前,請確保將CC / CXX設置(導出)為正確的二進制文件。


查看完整回答
反對 回復 2019-10-06
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

由于已包含C ++標記,因此可以使用{fmt}庫并完全避免PRIu64宏和其他printf問題:


#include <fmt/core.h>


int main() {

  uint64_t ui64 = 90;

  fmt::print("test uint64_t : {}\n", ui64);

}

提議基于該庫的格式化工具用于C ++ 20:P0645中的標準化。



查看完整回答
反對 回復 2019-10-06
  • 3 回答
  • 0 關注
  • 1651 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號