c語言define語句的用法,C語言, define語句的用法。

時間 2021-09-08 10:23:35

1樓:亙心

帶參巨集定義

c語言允許巨集帶有引數。在巨集定義中的引數稱為形式引數,在巨集呼叫中的引數稱為實際引數。對帶引數的巨集,在呼叫中,不僅要巨集,而且要用實參去代換形參。

帶參巨集定義的一般形式為:

#define 巨集名(形參表) 字串

在字串中含有各個形參。

帶參巨集呼叫的一般形式為:

巨集名(形參表)

例如:#define m(y) ((y)*(y)+3*(y) /*巨集定義*/

....

k=m(5); /*巨集呼叫*/

....

在巨集呼叫時,用實參5去代替形參y,經預處理巨集後的語句為:

k=5*5+3*5

程式2:

#define max(a,b) (a>b)?a:bmain()

上例程式的第一行進行帶參巨集定義,用巨集名max表示條件表示式(a>b)?a:b,形參a,b均出現在條件表示式中。

程式第七行max=max(x,y)為巨集呼叫,實參x,y,將代換形參a,b。巨集後該語句為:

max=(x>y)?x:y;

用於計算x,y中的大數。

2樓:吉祥二進位制

1.簡單的巨集定義

格式:#define 識別符號 替換列表

說明:替換列表可以是數,字串字面量,標點符號,運算子,識別符號,關鍵字,字元常量。

注意:替換列表是可以為空的

典型錯誤:

#define n = 100

int a[n]; /*這樣會成為int a[= 100],這裡會處理成為一種標識記號一樣*/

#define n 100;

int a[n]; /*帶分號的定義會成為int a[100;],這是一種很常見的錯誤*/

#define pin (int*);

pin a,b;

int* a,b; /*本意是a和b都是int型指標,但是實際上變成int* a,b;a是int型指標,而b是int型變數。這是應該使用typedef來代替define,這樣a和b就都是int型指標了。*/

典型的使用方法:

使用巨集定義可以自己根據自己的習慣來定義甚至改變c語言的語法習慣,例如:

#define begin

int main()begin

printf ("define----\n");

end定義乙個迴圈

#define loop for(;;)

重新定義資料型別

#define it int

2.帶引數的巨集

#define 識別符號(x1,x2,x3...xn) 替換列表  (注意:x1,x2,x3..是巨集的引數,識別符號和其左括弧之間不能有空格)

使用方法:

#define max(x,y) ((x)>(y)?(x):(y))

i=max(j+k,m-n);

替換為:

i=max((j+k)>(m-n)?(j+k):(m-n));

#define si_ex(n) ((n)%2==0)

if(si_ex(i)) i++;

替換為:

if(si_ex((i)%2==0))

通過以上例子可以看出,識別符號帶引數(x1,x2,x3.....)在替換時會被替換列表(y1,y2,y3....)對應的替換,但是和順序無關。

3.巨集的特殊單行定義

#define a(x) t_##x

#define b(x) #@x

#define c(x) #x

x=1替換為:

a(1)------> t_1 (t_##x,##符號是記號粘黏符號,將前後的字元粘黏起來。)

b(1)------> '1' ( #@x , #@ 符號會將巨集的引數進行字串字面量化,並且加『』號)

c(1)------> "1" ( #x ,#符號會將巨集的引數進行字串字面量化,並且加""號)

4.define的多行定義

define可以替代多行的**,在每乙個換行的時候加上乙個"\"

#define max(x,y) do  while(0) /* (no trailing ; ) */ \

5.在大規模的開發過程中,特別是跨平台和系統的軟體裡,define最重要的功能是條件編譯。

#ifdef windows

......

......

#endif

#ifdef linux

......

......

#endif

可以在編譯的時候通過#define設定編譯環境

6.取消巨集

#undef 識別符號

7.條件編譯

#ifdef ***…(#else) … #endif

8.預定義巨集

在c語言中收錄了一些有用的巨集,這些巨集是提供當前編譯資訊的。

__line__        被編譯檔案的行數

(整型)

__file__  被編譯檔案的名字 (字元型)

__date__  編譯日期 (字元型)

__time__  編譯時間 (字元型)

__stdc__  如果編譯器接受標準c,那麼值為1. (整型)

通常在編譯的時候可以用這些預定義的巨集來進行排錯,例如:

一般情況下,當出現除零的情況時編譯器是沒有提示的,可以自定義乙個解決辦法。

#define checkzero(divisor)\

if(divisor==0)\

printf("***attempt to divide by zero in line %d of file %s ***\n",__line__,__file__);\

引用方法

checkzero(j);

k=i/j;

3樓:

這種預編譯方式是為了防止重複編譯,意思是,如果你預先定義了my_globals,則my_ext就在本檔案下有效,否則就為extern型,在本資料夾下的其他檔案下也可以引用

c語言中#define是什麼意思

4樓:超級飄飄乖乖

是定義的意思,將乙個變數強制定義為你想要的值。如#define pi 3.14就是將pi的值定義成3.14,這樣在程式裡看到pi就可以替換成3.14了。

在程式執行期間其值可以改變的量稱為變數,變數型別又分為系統變數和使用者自定義變數。

使用者自定義變數其實和系統變數含義是一樣的,在學到結構化程式設計的時候,你就會明白自定義變數的意思了。

系統變數分為四種:

1、int整形變數;

2、使用者存放整數的變數;

3、佔4個位元組的大小;float單精度浮點型,就是存放小數點的數值;佔4個位元組大小;double高精度浮點型,相對float而言,double保留的小數點位數更精確,

4、佔8個位元組的大小;char字元變數,主要存放字母,佔1個位元組的大小。

簡單的define定義

#define maxtime 1000

乙個簡單的maxtime就定義好了,它代表1000,如果在程式裡面寫

if(i編譯器在處理這個**之前會對maxtime進行處理替換為1000。

這樣的定義看起來類似於普通的常量定義const,但也有著不同,因為define的定義更像是簡單的文字替換,而不是作為乙個量來使用,這個問題在下面反映的尤為突出。

5樓:可愛的壞男孩

有的時候為了程式的通用性,可以使用#define預處理巨集定義命令,它的具體作用,就

是方便程式段的定義和修改。

舉個例子吧,如果說你在做乙個專案,這個專案的**很長,有5000多行,而且基本上裡面的同乙個常量n就佔了3000多行,如果說今後你要是想對這個常量n的值進行修改,如果在程式的開始沒有定義乙個#define n,那麼改起來不是很麻煩,3000多行啊,那不是要暈過去了~如果你事先定義了乙個#define n 『常量值』,那麼當你要修改程式內部的常量值時,只要修改n後面的常量值就等於把程式內部的要修改的相同常量值都改了,那就很方便了

在程式執行期間其值可以改變的量稱為變數,變數型別又分為系統變數和使用者自定義變數,使用者自定義變數其實和系統變數含義是一樣的,在學到結構化程式設計的時候,你就會明白自定義變數的意思了。系統變數分為四種,int整形變數,使用者存放整數的變數,佔4個位元組的大小;float單精度浮點型,就是存放小數點的數值,佔4個位元組大小;double高精度浮點型,相對float而言,double保畱的小數點位數更精確,佔8個位元組的大小;char字元變數,主要存放字母,佔1個位元組的大小

6樓:福建省寧德市

#define是巨集定義的意思

2. 巨集定義是用巨集名來表示乙個字串,在巨集展開時又以該字串取代巨集名,這只是一種簡單的代換,字串中可以含任何字元,可以是常數,也可以是表示式,預處理程式對它不作任何檢查。如有錯誤,只能在編譯已被巨集後的源程式時發現。

3.巨集定義不是說明或語句,在行末不必加分號,如加上分號則連分號也一起置換。

4.巨集定義其作用域為巨集定義命令起到源程式結束。如要終止其作用域可使用#undef命令。

7樓:雲南新華電腦學校

#define是巨集定義的意思;int整型變數;

8樓:謐夜欣韻

定義的意思,比如#define size 5,這就定義了乙個巨集,size在程式中就等於5,這樣更改乙個大量使用的值很方便,如:int a[size]就和int a[5]一樣

9樓:匿名使用者

#define

讓大師來用最簡單的方法來回答,就是 定義乙個可以替換的 東東比如說#define a b

在程式中遇到a,a就變成b了

他還可以檢討的

比如#define a a,b

#define b a,b,c

b把他佔開就是 a b b c

10樓:匿名使用者

還有一點 巨集只是文字替換 不參與編譯

11樓:匿名使用者

定義嘛,一般用於定義標頭檔案。

12樓:匿名使用者

...基本東西書上都有

c語言 define 怎麼用的

13樓:大野瘦子

有三種用法,例如替代多行的**、條件編譯,還有典型的巨集定義,具體如下:

1、define最重要的用法是條件編譯

#ifdef windows

#endif

#ifdef linux

#endif

可以在編譯的時候通過#define設定編譯環境2、典型的使用方法

使用巨集定義我們可以自己根據自己的習慣來定義甚至改變c語言的語法習慣,例如:

#define begin

int main()begin

printf ("define----\n");

end定義乙個迴圈

#define loop for(;;)

重新定義資料型別

#define it int

3、define可以替代多行的**,在每乙個換行的時候加上乙個"\"

#define max(x,y) do while(0) /* (no trailing ; ) */ \

c語言getch的用法,C語言,getch 的用法?

getch 並非標準c中的函式,不存在c語言中。所在標頭檔案 conio.h 建議換成getchar 之類的 getch getch 所在標頭檔案 conio.h 函式用途 從控制台讀取乙個字元,但不顯示在螢幕上函式原型 int getch void 返回值 讀取的字元 例如 char ch 或in...

while 的用法 c語言,c語言中while的用法

1024程式設計師 c語言迴圈結構之while迴圈語句 while 表示式 就是當 表示式的則為非零時,執行迴圈體內的語句!你的程式相當於 int jsvalue long n if s n return 1 if s n return 0 k是long int型別,所以k不能為小數 輸入n迴圈開始...

c語言strcpy用法,c語言中strcpy函式幹什麼用的

飛喵某 2 接著定義兩個陣列a和b,程式經過strcpy函式處理,將b陣列中的字串複製到a陣列中,最後列印出結果 3 最後來看看效果。開啟除錯視窗,輸入一句話,按下回車輸出了這句話。以上就是c語言中strcpy的用法 例如 定義一個字串char a 20 和一個字串c i am a teacher ...