如果你是 c++ 程式設計師,應該接觸過 c++11 裡的decltype操作符,它的作用是自動推導表示式的資料型別,以解決泛型程式設計中有些型別由模板引數決定而難以(甚至不可能)表示的問題。其實這個特性在 c 語言中也早有類似的實現,gnu c 標準中的乙個擴充套件特性typeof 作用與 decltype 類似。
__typeof__ (ret) errnum =
(ret)
;
#include
intsnprintf
(char
* dest_str,size_t size,
const
char
* format,..
.);
【函式功能】:
先將可變引數 「…」 按照format的格式格式化為字串,然後再將其拷貝至dest_str中。
如果格式化後的字串長度小於size,則將字串全部拷貝至dest_str中,並在字串結尾處加上『\0』; 如果格式化後的字串長度大於或等於size,則將字串的(size-1)拷貝至dest_str中,然後在字串結尾處加上』\0』. 函式返回值是 格式化字串的長度。
__builtin_expect
(errnum !=0,
0)
這個指令是gcc引入的,作用是"允許程式設計師將最有可能執行的分支告訴編譯器"。這個指令的寫法為:__builtin_expect(exp, n)
。意思是:exp==n的概率很大。一般的使用方法是將__builtin_expect指令封裝為likely和unlikely巨集。
__line__:當前程式行的行號,表示為十進位制整型常量
__file__:當前源檔名,表示字串型常量
__date__:轉換的日曆日期,表示為mmm dd yyyy 形式的字串常量,
mmm是由asctime產生的。
__time__:轉換的時間,表示"hh:mm:ss"形式的字串型常量,
是有asctime產生的。(asctime貌似是指的乙個函式)
__stdc__:編輯器為iso相容實現時位十進位制整型常量
__func__:它指示所在的函式
__assert_perror_fail:列印一條包含錯誤碼errnum的錯誤訊息,並終止程式
反斜槓起到換行作用,用於巨集定義和字串換行。其中巨集定義中使用居多。如果一行**有很多元素,導致太長影響閱讀,可以通過在結尾加\的方式,實現換行,編譯時會忽略\及其後的換行符,當做一行處理。
#define check_action_return(expr) \
if (!expr) else
C語言一些不常用的函式和巨集定義說明
一 陣列清空 include include int main void for j 0 j 10 j printf n memset str,0,sizeof str 陣列清空 for i 0 i 500 i 二 char型別轉換int型別 include 需要標頭檔案stdlib.h inclu...
C語言巨集定義的一些用法
do while 0 在巨集定義中合理使用do while 0 可以更規範地使用巨集定義 沒有使用do while 0 前 define led on int main void 多了個分號 使用do while 0 define led on dowhile 0 int main void whi...
c 語言中的巨集定義
巨集定義 巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯 1.不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的 符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨...