記:巨集定義中的##和#的作用
核心中有很多的巨集定義,在巨集定義define中經常看到兩個字串##和#,這裡把它的用法做一下說明:
一、 ##是一個連線符號,用於把引數連在一起 例如:
> #define FOO(arg) my##arg 則
> FOO(abc) 相當於 myabc
二、 #是“字串化”的意思。出現在巨集定義中的#是把跟在後面的引數轉換成一個字串 例如:
> #define STRCPY(dst, src) strcpy(dst, #src) 則
> STRCPY(buff, abc) 相當於 strcpy(buff, "abc")
#define CON(n) #n"good" 那麼
int id = 10;CON(id)的值就是idgood
相關推薦
記:巨集定義中的##和#的作用
核心中有很多的巨集定義,在巨集定義define中經常看到兩個字串##和#,這裡把它的用法做一下說明: 一、 ##是一個連線符號,用於把引數連在一起 例如: &n
【轉】巨集定義中#和##的使用
https://www.cnblogs.com/zhongzhe/p/3892682.html #的功能是將其後面的巨集引數進行字串化操作(Stringfication),簡單說就是在對它所引用的巨集變數通過替換後在其左右各加上一個雙引號 ##被稱為連線符(concatenator),用來
【轉】 do {...} while (0) 在巨集定義中的作用
如果你是一名C程式設計師,你肯定很熟悉巨集,它們非常強大,如果正確使用可以讓你的工作事半功倍。然而,如果你在定義巨集時很隨意沒有認真檢查,那麼它們可能使你發狂,浪費N多時間。在很多的C程式中,你可能會看到許多看起來不是那麼直接的較特殊的巨集定義。下面就是一個例子:
C++中的巨集定義及#和##的作用
#define f(a,b) a##b // (1) #define g(a) #a // (2) #define h(a) g(a) // (3)例如,有以上三個巨集定義,求下面的結果:printf("%s\n", g
#define巨集定義中的#和##用法和區別
參考Difference between # and ## 簡單來說,在巨集定義中,#是將變數轉換成字串的作用,而##是連線兩個引數作用 ###exaplem #include <iostream> #define stringize_indire
巨集定義中##符號的作用
在巨集定義中,經常會遇到使用##符號,這個符號到底什麼作用呢?今天這裡簡單的說明下: 1. ## 名稱:記號粘帖操作符(token paste operator) 作用:##先變成空格,將字元分隔開來,然後再將字元連線起來。 在巨集定義中,前處理器一般把
Python:函式定義中預設引數正確方式和錯誤方式
正確的方式:def x_y_sum(x,y=20): print("x={}".format(x)) print("y={}".format(y)) return x+yres1 = x_y_sum(10)print("res1={}".format
巨集定義中的特殊引數(#、##、...和__VA_ARGS__) 【轉】
轉自:http://blog.csdn.net/cqupt_chen/article/details/8055215 最近在android的某個程式碼的標頭檔案中發現很多__VA_ARGS__,google一下.還是比較有用.附帶其它巨集定義引數,一起記錄之. 1.
工作采坑劄記:3. Spark中es-hadoop插件異常解決
-h adp elastic sed thread ould dex flush 文檔 1. Es-Hadoop異常: org.elasticsearch.hadoop.EsHadoopException: Could not write all entries [61
巨集定義#Define和Typedef的用法和區別
一:各自的定義 (一) Typedef 本身是一種儲存類的關鍵字,在計算機程式語言中用來為複雜的宣告定義簡單的別名。 Typedef 的含義: 找到你所要宣告的通用格式。例如這裡申明 inta[4],b[4],c[4],只有a,b,c不
C語言巨集定義中#define中的井號#的使用
#include <stdlib.h> #include <stdio.h> #include <string.h> typedef enum { E_1, E
【C語言】巨集定義define 和型別重新命名typedef
C語言裡面有兩個不容易區分的語法概念,巨集定義define 和型別重新命名typedef。下面我們來談一下兩者之間的差異。 1.型別重新命名typedef: 關鍵字typedef提供了一種為已定義好的資料型別建立別名的機制,為了建立更簡短的型別名,通常使用type
define巨集定義中的#,##,@#及\符號
一、# 名稱:字串化操作符 其作:將巨集定義中的傳入引數名轉換成用一對雙引號括起來引數名字串。 使用條件:只能用於有傳入引數的巨集定義中,且必須置於巨集定義體中的引數名前 舉例: #define example1(instr) #instr string str=
C/C++預處理、巨集定義--你和大牛之間只差一個巨集定義#define
今天讀一個github上下載的C語言程式碼,讀得時候就像在讀天書,完全不像C。在此之前,我一直以為自己C語言掌握的還不錯的。所以惡補了以下關於預處理的知識。 相信很多讀者和我一樣,只是會用C語言而已,只會迴圈跳躍閉著眼,但是學了巨集定義之後就馬上可以走上人生巔峰了。廢話到此為止,下面開整: 引用經
C巨集定義中##連線符與#符的含義
文章目錄 參考 note 不帶引數的巨集 附加說明: 帶引數的巨集 應題重點 有參巨集定義中#的用法 有參巨集定義中##的用法 實際的例子:
玩兒轉C語言:巨集定義(1)
1、為什麼要有巨集定義? 程式碼中某個特定數值需要參與運算,而且該數值作用於多個地方,當需要對該數值進行修改時,希望只改動一個地方就能實現該數值的全部更新;即便某個數值只用到一次,當修改時也會面臨搜尋閱讀大量程式碼、數值含義不明晰的問題;某些“操作塊”封裝成
iOS 使用巨集定義函式和程式碼塊
iOS使用巨集定義函式和程式碼塊 今天在開發過程中碰到一個問題:就是父類中要向外傳送通知,然後子類中或者其他類中來接收它。當然一般是把它寫到類方法中去,但是有個問題,就是如果呼叫的類不是它的子類,就不能直接呼叫,當然也可以採用靜態方法實現,我這裡主要是想用巨集
巨集定義中是使用 const(static) 還是 使用 define
const(static) 和 define 在開發中常用來定義常量,這樣做的好處是:使程式碼更易維護、提高程式碼的效率。 1、const(static) const是C/C++中的一個關鍵字(修飾符
巨集定義中,#/##的區別以及巨集的展開
1、關於符號#和## #define f(a,b) a##b#define g(a) #a#define h(a) g(a) # 將右邊的引數做整體的字串替換,即便是另一個巨集,也不展開,仍然作為字串字面資訊輸出。 g(hello world) = “hello
C++/C巨集定義中## 連線符與# 符的含義
轉載 ## 連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串(token)聯接起來,從而形成一個新的子串。但它不可以是第一個或者最後一個子串。所謂的子串(token)就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋,但不知道也無所謂。