如果你是一名C程序員,你肯定很熟悉宏,它們非常強大,如果正確使用可以讓你的工作事半功倍。然而,如果你在定義宏時很隨意沒有認真檢查,那么它們可能使你發狂,浪費N多時間。在很多的C程序中,你可能會看到許多看起來不是那么直接的較特殊的宏定義。下面就是一個例子: #define ...
單井號:將后面的 宏參數 進行字符串操作,即 將后面的參數用雙引號引起來 雙井號:就是用於連接 include lt stdio.h gt define COMMAND NAME NAME,NAME command define PRINT NAME printf token NAME d n , token NAME void quit command printf I am quit comm ...
2018-01-15 17:43 0 1418 推薦指數:
如果你是一名C程序員,你肯定很熟悉宏,它們非常強大,如果正確使用可以讓你的工作事半功倍。然而,如果你在定義宏時很隨意沒有認真檢查,那么它們可能使你發狂,浪費N多時間。在很多的C程序中,你可能會看到許多看起來不是那么直接的較特殊的宏定義。下面就是一個例子: #define ...
利用宏定義的##完成函數模板的定義與調用 宏定義代碼段 調用宏定義不同的函數,以下代碼實際定義了12個返回類型、函數名、函數內部變量類型不同的函數 宏定義中的#與##的含義 在宏定義中#是“字符串化”的意思。出現在宏定義中的#是把跟在后面的參數轉換成一個字符串。 其作用是:將宏 ...
1、條件編譯 C語言中,預處理過程讀入源代碼,檢查包含預處理指令的語句和宏定義,並對源代碼進行相應的轉換,預處理過程還會刪除程序中的注釋和多余的空白符號。預處理指令是以#開頭的代碼行,#必須是該行除了空白字符外的第一個字符。#后是指令關鍵字,在#和指令關鍵字之間允許存在若干空白 ...
#include <stdio.h>#define f(a,b) a##b#define g(a) #a#define h(a) g(a)int main(){ printf("%s/ ...
代碼中的family_##who表示以family_為前綴,將who為后綴與前綴連接,合成一個名字 參數前面的#使用來取參數的實值,ADD(1,200)運行結果為201 ...
實際上是gcc命令支持-D宏定義,相當於C中的全局#define: gcc -D name gcc -D name=definition Makefile中可以定義變量(和宏很像),但是是給make解釋器用的,對所編譯的文件完全沒有作用 ...
轉載:https://blog.csdn.net/baidu_33850454/article/details/79363033 1. 前言 使用#把宏參數變為一個字符串,用##把兩個宏參數貼合在一起. 2. 一般用法 #include<cstdio>#include< ...
1. # #的功能是將其后面的宏參數進行字符串化操作(Stringfication),簡單說就是在對它所引用的宏變量通過替換后在其左右各加上一個雙引號 那么實際使用中會出現下面所示的替換過程: 被替換為 這樣每次divider(除數 ...