Ⅰ c語言可變宏的用法
C語言可變宏的用法如下:
在1999年版本的ISO C 標准中,宏可以象函數一樣,定義時可以帶有可變參數。宏的語法和函數的語法類似。下面有個例子:
#define debug(format, …) fprintf (stderr, format, __VA_ARGS__)
這里,『…』指可變參數。這類宏在被調用時,它(這里指『…』)被表示成零個或多個符號,包括裡面的逗號,一直到到右括弧結束為止。當被調用時,在宏體(macro body)中,那些符號序列集合將代替裡面的__VA_ARGS__標識符。更多的信息可以參考CPP手冊。
GCC始終支持復雜的宏,它使用一種不同的語法從而可以使你可以給可變參數一個名字,如同其它參數一樣。例如下面的例子:
#define debug(format, args…) fprintf (stderr, format, args)
Ⅱ C語言宏運算
運行至c=fun(a,&b); 這一行後
a=1,b=3,c=5
因為在fun里,a++只是對這個函數內部的參數進行自加。所以a++不影響main里的a值。但因為b是以指針傳入的,所以更改的是存放b的內存單元里的值,所以main中的b值變了。c是return來的。不難理解。
運行至b=fun(c,&a); 這一行後
a=7,b=13,c=5
這里c的值不變,a=(c+1); b=(c+1)+a;
運行至a=fun(b,&c); 這一行後
a=29,b=13,c=15
Ⅲ c語言中的「宏」是指什麼
是一種批量處理的稱謂。計算機科學里的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。
「宏」這個詞的使用暗示著將小命令或動作轉化為一系列指令。
計算機語言如C語言或 匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
在Objective-C語言源程序中,允許用一個標識符來表示一個字元串,稱為宏,被定義為宏的標識符稱為宏名。在編譯預處理時,對程序中所有出現的宏名,都用宏定義中的字元串去替換,這稱為宏替換或宏展開。
宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。在Objective-C語言中,宏分為有參數和無參數兩種。
(3)c語言宏擴展閱讀
A類宏是用G65 Hxx P#xx Q#xx R#xx或G65
Hxx P#xx Qxx
Rxx格式輸入的,xx的意思就是數值,是以um級的量輸入的,比如你輸入100那就是0.1MM #xx就是變數號,變數號就是把數值代入到一個固定的地址中,固定的地址就是變數。
一般OTD系有#0~#100~#149~#500~#531.關閉電源時變數#100~#149被初始化成「空」,而變數#500~#531保持數據。我們如果說#100=30那麼現在#100地址內的數據就是30了。
B類宏能完成某一功能的一系列指令像子程序那樣存入存儲器,用戶可以設定M、S、T、G代碼調用它們,使用時只需給出這個指令代碼就能執行其功能,也可以像調用子程序一樣使用。
Ⅳ C語言宏定義
這個問題描述的不夠詳細。
宏定義中有一個很重要的事情就是要給參數加上括弧,否則就有可能影響最終的結果。
因為宏只是簡單的字元替換。
如:
#defineTIME_TWO(n)(n*2)
//當你參數是單一值是,看起來無影響,比如
TIME_TWO(3)
//會被正確的替換為如下,結果為6
(3*2)
//但如果你的參數本身就是一個表達式,比如
TIME_TWO(3+2)
//那麼就會被替換為如下,結果為7,不符合預期
(3+2*2)
//所以宏定義中需要包裹參數防止優先順序影響結果
#defineTIME_TWO_PREFECT(n)((n)*2)
//同樣調用
TIME_TWO_PREFECT(3+2)
//就會被正確的替換為如下,結果為10,符合預期
((3+2)*2)
Ⅳ c語言中宏是什麼意思
就是用一個標識符來代替一組已經定義好的操作,為了使使用起來方便~
Ⅵ 在C語言中「宏是什麼意思」
宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯
宏定義又稱為宏代換、宏替換,簡稱「宏」。
格式:
#define 標識符 字元串
其中的標識符就是所謂的符號常量,也稱為「宏名」。
預處理(預編譯)工作也叫做宏展開:將宏名替換為字元串。
掌握"宏"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,准確理解之前就要「換」。
即在對相關命令或語句的含義和功能作具體分析之前就要換:
例:
#define PI 3.1415926
把程序中出現的PI全部換成3.1415926
說明:
(1)宏名一般用大寫
(2)使用宏可提高程序的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:數組大小常用宏定義
(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。
(4)宏定義末尾不加分號;
(5)宏定義寫在函數的花括弧外邊,作用域為其後的程序,通常在文件的最開頭。
(6)可以用#undef命令終止宏定義的作用域
(7)宏定義不可以嵌套
(8)字元串" "中永遠不包含宏
(9)宏定義不分配內存,變數定義分配內存。
(10)宏定義不存在類型問題,它的參數也是無類型的。
Ⅶ C語言 宏
難道3不能是字元串嗎?
"3*pi"是字元串,"3"是它的子串。
"3*pi"宏展開後為"3*3.1415926"也是字元串,整個源程序都被認為字元串!
現在,還有有編譯,編譯時,編譯器會把3*3.1415926當表達式計算,用結果再替換一次!
Ⅷ 在C語言中 宏定義是什麼
在C語言源程序中,允許用一個標識符來表示一個字元串,稱為宏,宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。
(8)c語言宏擴展閱讀:
宏(Macro),是一種批量處理的稱謂。計算機科學里的宏是一種抽象,它根據一系列預定義的規則替換一定的文本模式。
計算機語言如C語言或匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
Ⅸ 什麼是c語言裡面的宏
簡而言之:就是用一個符號代替一堆東西。讓代碼精簡化
Ⅹ 在C語言中"宏"是什麼意思
定義的意思,在C語言中的宏定義就是定義外部變數,內部函數使用exiterm來調用
如:exiterm char c1,c2;
C語言中的宏定義的字是:defineC語言中的define宏定義有帶參數的和不帶參數兩中形式,不帶參格式是:#define 宏名,字元串帶參格式是:#define 宏名(參數1,參數2,...) 字元串在C語言里宏定義只用來做的宏名替換,而不做語法檢查的,因而它不是C語句,所以在宏定義的時候不需要在後面加";"宏也在C里也叫預處理命令,因為宏是在程序編譯前先進行字元替換的,所以叫預處理.在C里還有其它的預處理命令如:
#define
#undef
#ifdef等。