青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
small-fat
in fact , I'm not fat..
導(dǎo)航
C++博客
首頁
新隨筆
聯(lián)系
聚合
管理
統(tǒng)計
隨筆 - 32
文章 - 0
評論 - 23
引用 - 0
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(6)
給我留言
查看公開留言
查看私人留言
隨筆分類
about C++(2)
(rss)
Data Of ACM(19)
(rss)
日記(1)
(rss)
生活(1)
(rss)
之ACM.............(24)
(rss)
之mathematics........(3)
(rss)
隨筆檔案
2007年8月 (1)
2007年4月 (9)
2006年11月 (1)
2006年10月 (4)
2006年9月 (6)
2006年8月 (10)
2006年5月 (1)
相冊
Seeing is believing
My friends
qywyh
(rss)
輕松一刻
原諒一個強(qiáng)奸犯的自白(巨強(qiáng)悍!)
(rss)
最新隨筆
1.?netbeans中的c++配置
2.?Trie數(shù)+DP
3.?#define的用法
4.?pow函數(shù)比較不穩(wěn)定,可以用自定義的pown函數(shù)進(jìn)行計算
5.?multimap實現(xiàn)一對多映射
6.?多源最短路徑+最小路徑覆蓋
7.?動態(tài)創(chuàng)建二維數(shù)組
8.?用鏈表構(gòu)造鄰接矩陣
9.?nlogn的最大上升子序列長度算法
10.?高精度算法
搜索
積分與排名
積分 - 35338
排名 - 589
最新評論
1.?re: 高精度算法
評論內(nèi)容較長,點擊標(biāo)題查看
--郭如君
2.?re: 高精度算法
就是用字符串表示一個數(shù),如從1乘到1000,每位數(shù)用一個字節(jié)表示,負(fù)數(shù)表示如
-12345,等價于-1,8,7,6,5,5,高位肯定是-1。
--郭如君
3.?re: 歐拉函數(shù)
初次接觸歐拉函數(shù),請教一下:7^d≡1 mod 60,是如何推導(dǎo)d的值為43?
--1111
4.?re: 高精度算法
評論內(nèi)容較長,點擊標(biāo)題查看
--an
5.?re: 高精度算法
評論內(nèi)容較長,點擊標(biāo)題查看
--an
閱讀排行榜
1.?擴(kuò)展歐幾里德算法-求解不定方程,線性同余方程(3024)
2.?高精度算法(2794)
3.?多源最短路徑+最小路徑覆蓋(2514)
4.?netbeans中的c++配置(2242)
5.?ACM深度優(yōu)先搜索(一題及代碼)(1835)
評論排行榜
1.?高精度算法(5)
2.?國家隊論文(3)
3.?問題:UnionFindSet(3)
4.?中國vs足球(2)
5.?ACM深度優(yōu)先搜索(一題及代碼)(2)
#define的用法
轉(zhuǎn)載:
http://folsailor.bokee.com/6156411.html
#define的用法zz
今天整理了一些#define的用法,與大家共享!
1
.簡單的define定義
#define MAXTIME
1000
一個簡單的MAXTIME就定義好了,它代表1000,如果在程序里面寫
if
(i
編譯器在處理這個代碼之前會對MAXTIME進(jìn)行處理替換為1000。
這樣的定義看起來類似于普通的常量定義CONST,但也有著不同,因為define的定義更像是簡單的文本替換,而不是作為一個量來使用,這個問題在下面反映的尤為突出。
2
.define的“函數(shù)定義”
define可以像函數(shù)那樣接受一些參數(shù),如下
#define max(x,y) (x)
>
(y)?(x):(y);
這個定義就將返回兩個數(shù)中較大的那個,看到了嗎?因為這個“函數(shù)”沒有類型檢查,就好像一個函數(shù)模板似的,當(dāng)然,它絕對沒有模板那么安全就是了??梢宰鳛橐粋€簡單的模板來使用而已。
但是這樣做的話存在隱患,例子如下:
#define Add(a,b) a
+
b;
在一般使用的時候是沒有問題的,但是如果遇到如:c
*
Add(a,b)
*
d的時候就會出現(xiàn)問題,代數(shù)式的本意是a
+
b然后去和c,d相乘,但是因為使用了define(它只是一個簡單的替換),所以式子實際上變成了
c
*
a
+
b
*
d
另外舉一個例子:
#define pin (
int
*
);
pin a,b;
本意是a和b都是int型指針,但是實際上變成int
*
a,b;
a是int型指針,而b是int型變量。
這是應(yīng)該使用typedef來代替define,這樣a和b就都是int型指針了。
所以我們在定義的時候,養(yǎng)成一個良好的習(xí)慣,建議所有的層次都要加括號。
3
.宏的單行定義
#define A(x) T_##x
#define B(x) #@x
#define C(x) #x
我們假設(shè):x
=
1
,則有:
A(
1
)
------
〉T_1
B(
1
)
------
〉
'
1'
C(
1
)
------
〉
"
1
"
(這里參考了 hustli的文章)
3
.define的多行定義
define可以替代多行的代碼,例如MFC中的宏定義(非常的經(jīng)典,雖然讓人看了惡心)
#define MACRO(arg1, arg2)
do
{
\
/*
declarations
*/
\
stmt1;
\
stmt2;
\
/*
*/
\
}
while
(
0
)
/*
(no trailing ; )
*/
關(guān)鍵是要在每一個換行的時候加上一個
"
\
"
摘抄自http:
//
www.blog.edu.cn
/
user1
/
16293
/
archives
/
2005
/
115370
.shtml 修補(bǔ)了幾個bug
4
.在大規(guī)模的開發(fā)過程中,特別是跨平臺和系統(tǒng)的軟件里,define最重要的功能是條件編譯。
就是:
#ifdef WINDOWS
#endif
#ifdef LINUX
#endif
可以在編譯的時候通過#define設(shè)置編譯環(huán)境
5
.如何定義宏、取消宏
//
定義宏
#define [MacroName] [MacroValue]
//
取消宏
#undef [MacroName]
普通宏
#define PI (
3.1415926
)
帶參數(shù)的宏
#define max(a,b) ((a)
>
(b)? (a),(b))
關(guān)鍵是十分容易產(chǎn)生錯誤,包括機(jī)器和人理解上的差異等等。
6
.條件編譯
#ifdef XXX…(#
else
) …#endif
例如 #ifdef DV22_AUX_INPUT
#define AUX_MODE
3
#
else
#define AUY_MODE
3
#endif
#ifndef XXX … (#
else
) … #endif
7
.頭文件(.h)可以被頭文件或C文件包含;
重復(fù)包含(重復(fù)定義)
由于頭文件包含可以嵌套,那么C文件就有可能包含多次同一個頭文件,就可能出現(xiàn)重復(fù)定義的問題的。
通過條件編譯開關(guān)來避免重復(fù)包含(重復(fù)定義)
例如
#ifndef __headerfileXXX__
#define __headerfileXXX__
…
文件內(nèi)容
…
#endif
以上只是我從網(wǎng)絡(luò)上搜集了一些關(guān)于define的一些用法,可能還不全面,而且#define的使用本來也存在這爭議,如果你對#define的用法也很有興趣,可以來參加我們的討論(點擊下面的鏈接)http:
//
www.dingge.com
/
forum
/
dispbbs.asp?boardID
=
43
&
ID
=
6972
&
page
=
1
#define 的注意用法
在這里我們講講#define的一些誤用,因為上一片已經(jīng)講了它的主要作用,這篇主要是一些比較常見的宏陷阱。首先輕松一下。如下的一個經(jīng)典例子。
#define
private
public
#include
using namespace std;
class c
{
private
:
int
i;
};
int
main()
{
c c1;
c1.i
=
1
;
cout
<
}
#define 竟然讓private如此的脆弱,但是卻揭示了#define陷阱的根源,它僅僅是代碼替換機(jī)制而已,除此之外,它什么都不是。
讓我們步入正題,來看看下面的一個定義會產(chǎn)生一個什么樣的錯誤?
#define f (x) ((x)
-
1
)
如果這個是一個函數(shù)就沒有什么問題
int
f (
int
x) { return x
-
1
; }
但是這里是define的世界,f(x)只見出現(xiàn)了一個可怕的空格
使得使得程序中如果出現(xiàn)了
f(
10
)
這個代碼,最終就變成了
(
10
) (
10
-
1
)(
10
)這樣一個奇怪的東西,當(dāng)然這個代碼倒是無法通過編譯,還是可以檢查出來的。算是讓我們逃過了一次,下次就沒有那么幸運了,讓我們繼續(xù)。
#define
abs
(x) x
>
0
? x:
-
x (引用自C語言陷阱與缺陷)
這個代碼有什么問題?也許大家也注意到了,我一直在用無數(shù)的()來寫#define,不是因為我很喜歡()這個東西,而是當(dāng)我在進(jìn)行如下的調(diào)用的時候。
z
=
abs
(a
-
b)
//
嗚呼,這將產(chǎn)生什么東西呢?
答案是:
a
-
b
>
0
? a
-
b :
-
a
-
b
這個顯然不是我們要的結(jié)果,因為當(dāng)a
-
b
<
0的時候?qū)⒎祷匾粋€
-
a
-
b,要解決這個問題,我們就要使用()來解決。
#define
abs
(x) (x)
>
0
? (x):
-
(x)
現(xiàn)在這個代碼就可以正常的工作了。只要我們緊記#define是代碼替換的機(jī)制,不要對它有任何的奢求,就會避免上面的問題。另外,因為宏不是一個類型,沒有數(shù)據(jù)安全檢查,在調(diào)試的時候也會產(chǎn)生障礙,所以,C
++
就一直提倡使用const和inline來替換#define,也許,#define真的會在歷史的舞臺上消失,但define在C語言時代留下的功績卻不應(yīng)該忘記。
來自 http:
//
community.csdn.net
/
Expert
/
topic
/
3195
/
3195102
.xml?temp
=
.
3936731
posted on 2007-04-18 23:53
small-fat
閱讀(1369)
評論(1)
編輯
收藏
引用
所屬分類:
about C++
Comments
#
re: #define的用法
Achigo
Nice
Posted @ 2007-06-27 15:45
回復(fù)
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
相關(guān)文章:
netbeans中的c++配置
#define的用法
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © small-fat
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
久久亚洲午夜电影
|
亚洲日本va午夜在线电影
|
亚洲国产日韩一区
|
国产精品视频1区
|
亚洲黄色av
|
1024精品一区二区三区
|
亚洲欧美国产精品专区久久
|
亚洲国产精品电影在线观看
|
午夜免费日韩视频
|
亚洲午夜一级
|
欧美精品在线观看一区二区
|
免费观看亚洲视频大全
|
国产伦精品一区二区三区高清版
|
亚洲经典一区
|
亚洲黄色三级
|
久热精品在线视频
|
久久综合久久久久88
|
国产欧美日韩精品a在线观看
|
亚洲日本在线观看
|
洋洋av久久久久久久一区
|
久久久久99
|
蜜臀av性久久久久蜜臀aⅴ四虎
|
国产精品播放
|
亚洲欧洲日产国产网站
|
亚洲精品护士
|
欧美国产三区
|
亚洲精品一区久久久久久
|
9色精品在线
|
欧美日韩国产综合网
|
亚洲欧洲中文日韩久久av乱码
|
91久久精品国产91久久性色tv
|
久久久久久久久蜜桃
|
欧美成年人网站
|
亚洲黑丝在线
|
欧美精品免费看
|
夜夜夜久久久
|
欧美中文字幕不卡
|
国内伊人久久久久久网站视频
|
久久精品国产免费看久久精品
|
久久免费午夜影院
|
91久久久久久
|
欧美色道久久88综合亚洲精品
|
亚洲伦伦在线
|
欧美一级久久
|
亚洲国产精品va在线看黑人动漫
|
国产老肥熟一区二区三区
|
亚洲综合国产
|
毛片av中文字幕一区二区
|
亚洲激情网站免费观看
|
欧美日韩一级视频
|
亚洲欧美视频一区二区三区
|
久久视频在线视频
|
亚洲毛片在线免费观看
|
欧美午夜视频
|
久久香蕉国产线看观看av
|
亚洲人成在线观看一区二区
|
亚洲欧美精品在线
|
精品二区视频
|
欧美日韩一区在线视频
|
欧美淫片网站
|
日韩一级成人av
|
久久中文精品
|
亚洲综合精品
|
亚洲欧洲午夜
|
国产日韩欧美麻豆
|
欧美—级高清免费播放
|
欧美一区二区在线观看
|
91久久黄色
|
久久久久久久网站
|
亚洲一级二级在线
|
亚洲高清久久网
|
国产九九精品
|
欧美日韩国产精品成人
|
久久精品国产久精国产爱
|
99视频+国产日韩欧美
|
免费在线观看日韩欧美
|
小黄鸭精品aⅴ导航网站入口
|
国产亚洲欧洲
|
欧美日韩亚洲综合在线
|
久久天堂成人
|
欧美一级二级三级蜜桃
|
日韩视频精品在线观看
|
免费观看一级特黄欧美大片
|
先锋影音一区二区三区
|
制服丝袜激情欧洲亚洲
|
亚洲国产成人在线
|
国产亚洲欧美一区
|
国产精品毛片一区二区三区
|
欧美国产三级
|
美女精品网站
|
久久综合五月天婷婷伊人
|
性色av一区二区三区在线观看
|
亚洲毛片网站
|
亚洲国产欧美一区
|
女同一区二区
|
免费成人激情视频
|
鲁大师成人一区二区三区
|
欧美一区日韩一区
|
欧美一二三视频
|
亚洲欧美日韩国产一区
|
亚洲天堂男人
|
亚洲香蕉在线观看
|
一区二区三区四区在线
|
亚洲精品视频免费在线观看
|
亚洲国产综合视频在线观看
|
亚洲国产导航
|
亚洲高清一区二区三区
|
亚洲国产精品久久久久秋霞蜜臀
|
国内视频一区
|
玉米视频成人免费看
|
亚洲国产日韩欧美综合久久
|
亚洲午夜未删减在线观看
|
中文在线不卡
|
亚洲欧美欧美一区二区三区
|
亚洲自啪免费
|
久久国产精品99精品国产
|
久久精品成人一区二区三区
|
久久精品国产第一区二区三区最新章节
|
久久av资源网
|
久久精品亚洲精品
|
老巨人导航500精品
|
欧美不卡在线视频
|
亚洲人成人一区二区三区
|
一本色道久久综合亚洲精品高清
|
欧美一区二区三区成人
|
羞羞视频在线观看欧美
|
久久gogo国模啪啪人体图
|
久久久综合网站
|
欧美第一黄网免费网站
|
欧美日韩亚洲视频一区
|
国产精品亚洲成人
|
伊大人香蕉综合8在线视
|
91久久久一线二线三线品牌
|
亚洲精选久久
|
欧美亚洲免费
|
欧美+日本+国产+在线a∨观看
|
亚洲人成艺术
|
香蕉国产精品偷在线观看不卡
|
国产精品久久国产精麻豆99网站
|
国产精品午夜久久
|
亚洲国产福利在线
|
亚洲午夜一区
|
久久综合国产精品台湾中文娱乐网
|
亚洲国产电影
|
午夜亚洲视频
|
欧美电影免费
|
国产一区二区三区久久久
|
亚洲精品人人
|
久久精品观看
|
日韩午夜在线电影
|
久久精品免费
|
国产精品色午夜在线观看
|
亚洲国产日韩一区二区
|
亚洲欧美日韩中文视频
|
亚洲二区视频
|
欧美在线www
|
国产精品a久久久久
|
亚洲国产精品免费
|
欧美亚洲一级片
|
91久久国产自产拍夜夜嗨
|
欧美在线播放一区
|
国产精品久久久久国产精品日日
|
在线欧美日韩精品
|
午夜亚洲伦理
|
99国产成+人+综合+亚洲欧美
|
久久久久国产精品www
|
国产精品乱子久久久久
|
一本色道久久综合狠狠躁的推荐
|
玖玖玖国产精品
|
亚洲综合色网站
|
欧美日韩综合另类
|
日韩视频免费
|
欧美国产三区
|
久久久久久电影
|
国产视频精品va久久久久久
|
亚洲午夜未删减在线观看
|
亚洲激情校园春色
|
久久最新视频
|
亚洲福利视频一区
|
久久亚洲精品伦理
|
亚洲欧美一区二区三区极速播放
|
欧美日韩久久
|
日韩网站在线看片你懂的
|
蜜臀久久99精品久久久久久9
|
亚洲欧美一区二区三区久久
|
国产精品久久久久影院色老大
|
一本到12不卡视频在线dvd
|
亚洲承认在线
|
久久成人国产
|
亚洲一区二区3
|
国产精品日韩在线
|
亚洲欧美日韩系列
|
亚洲一区欧美激情
|
国产欧美日韩精品a在线观看
|
欧美一区二粉嫩精品国产一线天
|
9色porny自拍视频一区二区
|
欧美午夜在线观看
|
午夜精品美女久久久久av福利
|
亚洲人成亚洲人成在线观看
|
欧美日韩高清不卡
|