亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 有沒有#end define這樣類似的功能? [打印本頁]

作者: anank    時(shí)間: 2009-01-08 11:02
標(biāo)題: 有沒有#end define這樣類似的功能?
我的想法是這樣的:

全面封裝一個(gè)函數(shù),要求是也有作用域,保證不和外面的相互沖突,例如:

#define SECONDS_OF_ONE_DAY 123456      --> 全局宏/和下面的重名


void MyDate()
{
     #define SECONDS_OF_ONE_DAY    86400  --> 局部宏變量定義開始
     ...
     ... 在函數(shù)內(nèi)使用自己定義的宏,離開這個(gè)函數(shù),這個(gè)宏就不存在了
     ...
     #end define                                                --> 局部宏變量定義結(jié)束
}


int main()
{
    int seconds = SECONDS_OF_ONE_DAY ;

    printf("%d\n", seconds) ; // 這里應(yīng)該打印出:123456
}

不知道有沒有這樣的語法?

[ 本帖最后由 anank 于 2009-1-8 11:04 編輯 ]
作者: 太平紳士    時(shí)間: 2009-01-08 11:07
#undef
作者: 雨過白鷺洲    時(shí)間: 2009-01-08 11:25
既然是函數(shù)內(nèi)部,那不用宏也罷,只要遵循接口定義,里面愛怎么實(shí)現(xiàn)怎么實(shí)現(xiàn)
作者: xiexiecn    時(shí)間: 2009-01-08 11:31
標(biāo)題: 回復(fù) #1 anank 的帖子
用const int SECONDS_OF_ONE_DAY=123456;不就可以達(dá)到你要的效果么
作者: eveson    時(shí)間: 2009-01-08 11:35
原帖由 太平紳士 于 2009-1-8 11:07 發(fā)表
#undef


正解
作者: anank    時(shí)間: 2009-01-08 11:49
哎,說了一大串,原來就是這個(gè)簡單的東西,呵呵

記得在學(xué)校時(shí)學(xué)過,忘記了
作者: langue    時(shí)間: 2009-01-08 12:12
保證不和外面的相互沖突


那你還得先試試 #ifdef 或者 #if (defined
要不然還可能沖突
宏的作用域?宏的作用域就是預(yù)處理器。
作者: swxlion    時(shí)間: 2009-01-08 16:16
原帖由 eveson 于 2009-1-8 11:35 發(fā)表


正解


+1

(2樓正解)
作者: 凍慘鳥    時(shí)間: 2009-01-08 16:28
原帖由 langue 于 2009-1-8 12:12 發(fā)表


那你還得先試試 #ifdef 或者 #if (defined
要不然還可能沖突
宏的作用域?宏的作用域就是預(yù)處理器。

或者說宏沒有作用域的概念
作者: samon_fu    時(shí)間: 2009-01-08 18:18
標(biāo)題: 回復(fù) #1 anank 的帖子
做#undef前最好還是做個(gè)
#ifdef 判斷才穩(wěn)妥。

不過如果只是為了局限在一個(gè)函數(shù)內(nèi)部來用,就直接用個(gè)局部變量就省事省心了。沒必要折騰宏。

宏在預(yù)處理階段就都替換好了,如果一定要談作用域,我覺得那個(gè)c文件包含了對(duì)應(yīng)的頭文件(宏定義存在的),那就在那個(gè)c文件中起作用。

已經(jīng)按照民意給2樓加分了




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2