C語言中 符合的作用介紹

2021-07-24 17:22:44 字數 2610 閱讀 2188

1

、巨集定義中使用#

符號,巨集定義中使用#

代表把引數變成乙個字串,巨集定義中使用##

代表把兩個巨集引數連線在一起。

具體用法:

#include

#definestr(s) #s

#definecons(a, b) a##e##b

voidmain()

2、當巨集引數是另乙個巨集的時候,需要注意,凡是巨集定義裡面用到#

或者##

的地方,巨集引數不會再展開。

#include

#defineint_max 100

#definestr(s) #s

#definea (2)

#definecons(a, b) a##e##b

voidmain()

解決這個問題的方法很簡單,中間加上一層轉換即可。

#define_str(s) str(s)

printf(「%d」,_str(int_max)); => printf(「%d」, str(100));

#define_cons(a, b) cons(a, b)

printf(「%d」,_cons(a, a)); => printf(「%d」, cons((2), (2))); 3

、#和##

的特殊應用

#define_a1(type, var, line) type var##line

#define_a0(type, line) _a1(type, _anonymous,line)

#definea(type) _a0(type, __line__)

a(staticint) => _a0(static int, _anonymous, __line__) => _a1(staticint, _anonymous,70) => static int _anonymous70 c

語言中的

__line__

用以指示本行語句在原始檔中的位置資訊,舉例如下:

#include

main()

;

該程式在

linux

用gcc

編譯,在

windows

的vc6.0

下編譯都可以通過,執行結果都為:

7

8

9

還可以通過語句

#line

來重新設定

__line__

的值,舉例如下:

#include

#line200  

main()

;

編譯執行後輸出結果為:

202

203

204

c

語言中的

__file__

用以指示本行語句所在原始檔的檔名,舉例如下(

test.c):

#include

intmain()

在gcc

編譯生成

a.out

,執行後輸出結果為:

test.c

windows

的vc6.0

下編譯執行結果為:

c:\documentsand settings\administrator\

桌面\test.c

另外

gcc還支援

__func__,

它指示所在的函式,但是這個關鍵字不被

windows

下的vc6.0支援.

#include

voidmain()

其編譯後輸出結果為

thisis print by function main

#definefill(a)

enumidd;

typedefstruct msg

msg;

msg_msg = ;

c語言中 作用

和 操作符是和 define巨集使用的.使用 使在 後的首個引數返回為乙個帶引號的字串.例如,命令 define to string s s 將會使編譯器把以下命令 cout to string hello world endl 理解為 cout hello world endl 使用 鏈結 前後的...

C語言中extern的作用

extern可以置於變數或者函式前,以標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告 extern char a 請問,這樣可以嗎?答案與分析 1 不可以,程式執行時會告訴你...

C語言中static的作用

在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 第乙個作用 隱藏。當我們同時編譯多個檔案時,所有未加static字首的 全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。下面是a.c的內容 i...