#define warn_if(exp) \do \
while(0)
//那麼實際使用中會出現下面所示的替換過程:
warn_if (divider == 0);
//被替換為
do while(0);
2.##被稱為連線符(concatenator),用來將兩個token連線為乙個token。注意這裡連線的物件是token就行,而不一定是巨集的變數,比如:
#define link_multiple(a, b, c, d) a##_##b##_##c##_##dtypedef struct _record_type link_multipl (name, company, position, salary);
//這裡這個語句將展開為:
typedef struct _record_type name_company_position_salary;
兩個井號 和 乙個井號
連線符 兩個井號 不知道什麼符 乙個井號 連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串 token 聯接起來,從而形成乙個新的子串。但它不可以是第乙個或者最後乙個子串。所謂的子串 token 就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋 符是把傳遞過來的引...
兩個井號 和 乙個井號 都是什麼意思
連線符 兩個井號 不知道什麼符 乙個井號 連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串 token 聯接起來,從而形成乙個新的子串。但它不可以是第乙個或者最後乙個子串。所謂的子串 token 就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋 符是把傳遞過來的引...
兩個井號 和 乙個井號 都是什麼意思
連線符 兩個井號 不知道什麼符 乙個井號 連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串 token 聯接起來,從而形成乙個新的子串。但它不可以是第乙個或者最後乙個子串。所謂的子串 token 就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋 符是把傳遞過來的引...