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

1.簡單的宏定義

格式:#define 標識符 替換列表

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

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

典型錯誤:

#defineN=100
inta[N];/*這樣會成為inta[=100],這里會處理成為一種標識記號一樣*/


#defineN100;
inta[N];/*帶分號的定義會成為inta[100;],這是一種很常見的錯誤*/

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

典型的使用方法:

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

#defineBEGIN{
#defineEND}
intmain()BEGIN
printf("DEFINE---- ");
END

定義一個循環

#defineLOOPfor(;;)

重新定義數據類型

#defineITint

2.帶參數的宏

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

使用方法:

#defineMAX(x,y)((x)>(y)?(x):(y))
i=MAX(j+k,m-n);

替換為:

i=MAX((j+k)>(m-n)?(j+k):(m-n));
#defineSI_EX(n)((n)%2==0)
if(SI_EX(i))i++;

替換為:

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

通過以上例子可以看出,標識符帶參數(X1,X2,X3.....)在替換時會被替換列表(Y1,Y2,Y3....)對應的替換,但是和順序無關。

3.宏的特殊單行定義

#defineA(x)T_##x
#defineB(x)#@x
#defineC(x)#x
x=1

替換為:

A(1)------> T_1 (T_##x,##符號是記號粘黏符號,將前後的字元粘黏起來。)

B(1)------> '1' ( #@x , #@ 符號會將宏的參數進行字元串字面量化,並且加『』號)

C(1)------> "1" ( #x ,#符號會將宏的參數進行字元串字面量化,並且加""號)

4.define的多行定義

define可以替代多行的代碼,在每一個換行的時候加上一個""

#defineMAX(X,Y)do{
語句1;
語句2;
/*注釋的寫法*/
}while(0)/*(notrailing;)*/

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

#ifdefWINDOWS
......
......
#endif
#ifdefLINUX
......
......
#endif

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

6.取消宏

#undef標識符

7.條件編譯

#ifdefXXX…(#else)…#endif


8.預定義宏

在C語言中收錄了一些有用的宏,這些宏是提供當前編譯信息的。

__LINE__ 被編譯文件的行數

(整型)

__FILE__ 被編譯文件的名字 (字元型)

__DATE__ 編譯日期 (字元型)

__TIME__ 編譯時間 (字元型)

__STDC__ 如果編譯器接受標准C,那麼值為1. (整型)

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

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

#defineCHECKZERO(divisor)
if(divisor==0)
printf("***ATTEMPTTODIVIDEBYZEROINLINE%doffile%s*** ",__LINE__,__FILE__);

引用方法

CHECKZERO(j);
k=i/j;

② C語言中define的用法是什麼

#define PAI 3等於將接下來代碼中的所有PAI替換成3,下面一行就被替換成了int yzc(3, int a),而3不是一個合法的形參變數聲明,故報錯。

③ 關於C語言中#define的用法

你用的是VC6.0哈。
可能是VC6.0不支持
#define TEST
這種定義宏的方式吧。
建議直接在TEST後面加個 0,也就是這樣定義宏
#define TEST 0
反正VS2005以上的編譯器都支持你這種TEST後面沒有內容的宏定義。
順便吐槽下,Printf("yes\n"); //這個地方,P應該是小寫吧。

④ C語言中關於#define的使用

編譯錯誤...
是不是寫錯了
//#define(A,B)
((A)<=(b)?(A):(B))
#define
MIN(A,B)
((A)<=(b)?(A):(B))//這樣的?
-------------
換後

((*p++)<=(b)?
(*p++):(b))
比較*p和b,然後p指向後一個元素
如果真,顯示*p,
p在指向後一個元素
假的話,
只顯示b

⑤ C語言中#define是什麼意思

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

⑥ C語言中define的用法,具體看圖

bool型和char型雖然都是佔一個位元組,但是是不一樣的兩個類型。bool只有0和1兩個值,但是char型的范圍是-256~255.char型是基本型,bool型由於不是基本型,你這樣定義是沒有問題的,如果導入別的頭文件包含bool的定義,就會產生沖頂以錯誤。「\x1」表示是1 x表示是16進制的數字,及0x0001的一種表示方法。
#define bool char表示把bool定義成char型。
#define true 1 可以理解為 true=1;

⑦ c語言 define 怎麼用的

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

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

#ifdef WINDOWS

......

......

#endif

#ifdef LINUX

......

......

#endif

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

2、典型的使用方法

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

#define BEGIN {

#define END }

int main()BEGIN

printf ("DEFINE---- ");

定義一個循環

#define LOOP for(;;)

重新定義數據類型

#define IT int

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

#define MAX(X,Y) do {

語句1;

語句2;

/* 注釋的寫法 */

} while(0) /* (no trailing ; ) */

(7)c語言define的用法擴展閱讀:

關於上述中用 #define 定義標識符的一般形式為:

1、#define 標識符常量 //注意, 最後沒有分號

2、#define 和 #include 一樣,也是以「#」開頭的,凡是以「#」開頭的均為預處理指令,#define也不例外。

3、#define又稱宏定義,標識符為所定義的宏名,簡稱宏,標識符的命名規則與前面講的變數的命名規則是一樣的。

4、#define 的功能是將標識符定義為其後的常量,一經定義,程序中就可以直接用標識符來表示這個常量。

⑧ c語言define用法

1、#ifdef:

如果有定義的#ifdef的一般形式為:#ifdef 宏替換名 語句段 #endif

含義為:如果宏替換名已被定義過,則對「語句段」進行編譯;如果未定義#ifdef後面的宏替換名,則不對語句段進行編譯。


2、#ifndef:

如果無定義的#ifndef的一般形式為:#ifndef 宏替換名 語句段 #endif

含義為:如果未定義#ifndef後面的宏替換名,則對「語句段1」進行編譯;如果定義#ifndef後面的宏替換名,則不執行語句段。


3、#undef:

#undef命令可以刪除事先定義了的宏定義。

#undef命令的一般形式如下:#undef 宏替換名

(8)c語言define的用法擴展閱讀:

c語言中define作為英文單詞的含義:

define是一個英語單詞,動詞、名詞,作動詞時意為「 定義;使明確;規定」,作名詞時意為 「(Define)人名;(英)德法恩;(葡)德菲內」。

短語搭配:

flow define流程定義

Define Mask定義罩框 ; 界說罩框

define byte[計]定義位元組 ; 定義位元組指令 ; 偽指令 ; 位元組定義

⑨ c語言 #define的用法

#if(x==1) C語言有這樣寫法嗎???
另外,你說X值從屏幕輸入不可以的,因為你就沒定義怎麼可能接收外部值,把你的邏輯想清楚.

⑩ C語言中的#define是什麼意思,有什麼作用,怎樣用

#define 定義一個標識符來表示一個常量。

其特點是定義的標識符不佔內存,只是一個臨時的符號,預編譯後這個符號就不存在了。

用 #define 定義標識符的一般形式為:

#define 標識符 常量 //注意, 最後沒有分號

#define 和 #include 一樣,也是以「#」開頭的。凡是以「#」開頭的均為預處理指令,#define也不例外。



(10)c語言define的用法擴展閱讀:

宏定義 #define 一般都寫在函數外面,與 #include 寫在一起。當然,寫在函數裡面也沒有語法錯誤,但通常不那麼寫。#define 的作用域為自 #define 那一行起到源程序結束。如果要終止其作用域可以使用 #undef 命令。

使用宏定義可以用宏代替一個在程序中經常使用的常量。注意,是「經常」使用的。這樣,當需要改變這個常量的值時,就不需要對整個程序一個一個進行修改,只需修改宏定義中的常量即可。

且當常量比較長時,使用宏就可以用較短的有意義的標識符來代替它,這樣編程的時候就會更方便,不容易出錯。因此,宏定義的優點就是方便和易於維護。