gcc中的#和##操作符以及除錯巨集
from
gcc在標準c上作了很多擴充套件,而linux核心**也依賴gcc的一些特性,這樣限制了使用其他編譯器編譯核心
gcc本身又支援多種cpu構架,我覺得這樣也是linux的自我保護
#是字串化操作符,可以把當前內容轉換為字串
##是連線操作符,可以在預處理階段實現字串的鏈結操作
#include
#include
#define dprintf(expr) printf("%s=%d/n",#expr,expr)
#define test(x) test ## x
void test1()
void test2()
int main(int argc, char *argv)
根據gcc的這些特性,通常可見兩種除錯巨集
#define debug_out (fmt,args...) /
#define debug_out (fmt,args...) /
printf("file:%s function:%s line:%d "fmt,__file__,__function__,__line__,##args);
這樣的除錯巨集的缺點是fmt只能是字串常量,不能像printf一樣使用字串指標了
ruby中的 操作符和 操作符
url str foo foo str bar foobar str foo foo str.object id 606274188 str bar foobar str.object id 606283808 str foobar foobarfoobar str.object id 606283...
MySQL的and操作符和or操作符
有時對where的要篩選的列不止乙個時,那麼就用到了and操作符和or操作符,and操作符顧名思義的意思是 並且 而or操作符的意思是 或者 比如以部門員工表為例 查詢部門編號為d001並且入職日期為 1985 02 02的員工編號,那麼就要用到and操作符 那如果是查詢部門編號為d001或者入職日...
C 中is和as操作符
在c 語言中進行型別轉換的操作符is和as。is和as都是強制型別轉換,但這兩者有什麼相同之處和不同之處呢?在使用is和as需要注意哪些事項?下面我們從簡單的 示例去 這個簡單的問題。is檢查乙個物件是否相容於指定的型別,並返回乙個boolean值 true或者fasle。注意,is操作符永遠不會丟...