在c/c++中,巨集定義是由define完成的,define中有三個特殊的符號值得我們注意:
1. #:在巨集展開的時候會將#後面的引數替換成字串,如:
#define p(exp) printf(#exp);
呼叫p(asdfsadf)的時候會將#exp換成"asdfsadf"
2. ##:將前後兩個的單詞拼接在一起。例如《the c programming language》中的例子:
#define cat(x,y) x##y
呼叫cat(var, 123)展開後成為var123.
3. #@:將值序列變為乙個字元
#define ch(c) #@c
呼叫ch(a)展開後成為'a'.
自己寫了一小段測試程式:
#define a(a,b) a##b
#define b(a) #a
#define c(a) #@a
#include
using namespace std;
void main()
結果為: 1
v1 v
在c++面對物件化程式設計還可以這樣用:
#define a
public://此處加一些成員,並且可以在成員名上用##下一些功夫
class object ;
巨集定義中的特殊符號
1.字串化操作,自動將巨集引數字串化 例如 define tostring x x char str tostring 123132 str 123132 2.引數連線操作,即允許巨集引數連線其他符號,構成新的引數,的左右符號必須能夠組成乙個有意義的符號 例如 define conn x,y x y...
bash特殊符號
bash的萬用字元與特殊符號 在 bash 的操作環境中還有乙個非常有用的功能,那就是萬用字元 wildcard 我們利用 bash 處理資料就更方便了!底下我們列出一些常用的萬用字元喔 符號意義 代表 0 個到無窮多個 任意字元 代表 一定有乙個 任意字元 同樣代表 一定有乙個在括號內 的字元 非...
oracle 特殊符號
oracle 特殊符號 oracle萬用字元,運算子的使用 用於where比較條件的有 等於 包含 in not in exists not exists 範圍 between.and not between.and 匹配測試 like not like null測試 is null is not ...