程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [c++]printf的編譯器靜態檢測

[c++]printf的編譯器靜態檢測

編輯:C++入門知識

經常會用到C的格式化字符串,gcc/clang的擴展,都是可以進行字符串和可變參數的檢測,不匹配,就會爆warning.

自己手寫的,需要加上一點代碼,否則不會進行檢測.

1.  可變參數

void my_printf(const char* format, ...) __attribute__ ((format (printf, 1, 2)))

這裡的1, 表示format string所在參數的下標(從1開始);

2表示可變參數開始的下標.

2. va_list

void my_print(const char* format, va_list args) __attribute__ ((format (printf, 1, 0)))

如果是va_list,那麼第二個index填成0即可.

3. this call

C++這種this call,this是第一個函數成員,只要別忘了這個就行.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved