亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

#define POCKETMONEY 10

#define POCKETMONEY 10? 這里后面加上分號就不能運行是什么鬼?

正在回答

2 回答

#define 本質上是字符的替換 ?

比如

#define?A?1
//?...
int?a?=?A;??//?編譯的時候編譯器就做了替換,這里變成了?int?a?=?1;

如果你加了 分號,就變成了這種情況

#define?A?1;
//?...
int?a?=?A;?//?替換后就成了?int?a?=?1;;??這當然是錯的

所以說 #define 用的時候要注意,尤其是定義“函數”時,注意加括號,否則容易有歧義

所以C++中,建議使用 const 來定義全局的常量,使用 typedef 定義類型別名,使用函數定義函數(C++可以使用functional模板函數,以及auto類型推斷,很方便。當然因為C++不斷的加新的特性,變得復雜臃腫,也有很多人不喜歡C++,比如Linux大神Linus喜歡純C)

0 回復 有任何疑惑可以回復我~
#1

qq_旗號 提問者

非常感謝!么么噠(づ ̄ 3 ̄)づ
2015-11-05 回復 有任何疑惑可以回復我~

另外,因為只是字符替換,#define不會做類型檢查,所以如果你使用#define定義“函數”,調用時傳錯了參數,編譯器在編譯的時候是不會發現的,這就把可能的錯誤推到了運行時,甚至可能不容易發現。這樣是不好的,錯誤越早發現越好,所以建議能不用 #define 就不用 #define。當然個人觀點而已,就像goto語句一樣,雖然很多人建議不用,不過即使啊Google,在Android的源碼里也經常使用goto

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

#define POCKETMONEY 10

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號