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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

希望熱心人能結合我的例子講解,請問函數前面加#define是什么意思?

希望熱心人能結合我的例子講解,請問函數前面加#define是什么意思?

qq_遁去的一_1 2022-10-20 15:15:56
#define READ_FIXED(results,keyName){nResult= configfile.readint(-T("fixedCursor"),keyName,ERROR_VAL)if(0<nResult&&nResult<m_warrle&&NULL!=m_pcursor[nResult]){results = nResult;}else{results = 0}}READ_FIXED(m_arrfixedCursor[1],-T("common"))READ_FIXED(m_arrfixedCursor[2],-T("hand"))READ_FIXED(m_arrfixedCursor[2],-T("pick"))
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

你確定是這樣定義的!??!
要加續行符吧!
應該是這個樣子才對。
#define READ_FIXED(results,keyName) \
{ \
nResult= configfile.readint(-T("fixedCursor"),keyName,ERROR_VAL) \
if(0<nResult&&nResult<m_warrle&&NULL!=m_pcursor[nResult]) \
{ \
results = nResult; \
} \
else \
{ \
results = 0 \
} \
\
}

預編譯語句只能定義在同一行,可是同一行寫不下許多代碼,于是續行符 \ 就派上了用場了。
加上續行符\,預編譯器就認為,所有代碼都在同一行上了,就把許多行,當作一個完整的宏定義了。
PS:空行也看作一行,也必須有續行符\。
C:標準庫的很多函數,都有可能是宏定義。
這是把帶參的宏,看作函數使用了。


查看完整回答
反對 回復 2022-10-24
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

#define沒什么特別的,就是指定某個字符串由新的名稱來替代。
比如#define A "abcdef"

如果你程序中使用A如下
char str[] = A;
預處理階段,預處理器會替換A為"abcdef"
所以當預處理結束,由編譯器編譯的時候,得到的實際代碼是
char str[] = "abcedf";

同理,如果int m = A;就會報錯,因為替換后為int m = "abcedf";這很明顯語法錯誤。

回到你的問題來看
#define READ_FIXED(results,keyName)
{
nResult= configfile.readint(-T("fixedCursor"),keyName,ERROR_VAL)
if(0<nResult&&nResult<m_warrle&&NULL!=m_pcursor[nResult])
{
results = nResult;
}
else
{
results = 0
}
}
這樣應該不能通過的,因為,#define 后面的內容必須要在同一行。
所以我覺得你的程序應該有\來把下一行連接到這一行:
#define READ_FIXED(results,keyName)\
{\
nResult= configfile.readint(-T("fixedCursor"),keyName,ERROR_VAL)\
if(0<nResult&&nResult<m_warrle&&NULL!=m_pcursor[nResult])\
{\
results = nResult;\
}\
else\
{\
results = 0\
}\
}

使用時就是是字符串替換的操作而已。
READ_FIXED(m_arrfixedCursor[1],-T("common"))這句就是把results替換為
m_arrfixedCursor[1],-T("common")替換掉keyName,復制{\
nResult= configfile.readint(-T("fixedCursor"),keyName,ERROR_VAL)\
if(0<nResult&&nResult<m_warrle&&NULL!=m_pcursor[nResult])\
{\
results = nResult;\
}\
else\
{\
results = 0\
}\
}替換READ_FIXED(m_arrfixedCursor[1],-T("common"))


查看完整回答
反對 回復 2022-10-24
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

理解成一種簡單的代碼內容替換就行了。

查看完整回答
反對 回復 2022-10-24
  • 3 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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