最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

RTOS相關(guān):誰(shuí)能解決這個(gè)指針問(wèn)題?

作者:treul 欄目:嵌入式系統(tǒng)
RTOS相關(guān):誰(shuí)能解決這個(gè)指針問(wèn)題?
typedef struct t_msg {
int a;
CHAR b;
} T_MSG;

typedef struct _mess {
SHORT c;
unsigned int d;
BOOL e;
} NET_MSG;


ER prcv_mbx(ID, T_MSG**);


void func(int x)
{
NET_MSG *rmess;
.
.
if(prcv_mbx((ID)mbxid, (T_MSG**)&rmess)==OK)
rmess->e = TRUE; //請(qǐng)問(wèn)高手們,收到消息后,rmess仍舊是NET_MSG*類(lèi)型嗎?我認(rèn)為rmess指向的實(shí)際上應(yīng)該已經(jīng)是T_MSG類(lèi)型的東東了,對(duì)嗎?
.
.
}

2樓: >>參與討論
treul
help
沒(méi)人能回答嗎?

3樓: >>參與討論
computer00
怎么會(huì)變呢?它依然是NET_MSG*類(lèi)型
    強(qiáng)制類(lèi)型轉(zhuǎn)化,只是臨時(shí)的。

4樓: >>參與討論
treul
但是,
消息實(shí)體是T_MSG結(jié)構(gòu)的啊。收到消息后,rmess的值(也就是一個(gè)地址),已經(jīng)是指向這個(gè)消息實(shí)體了啊。這時(shí)候再引用NET_MSG的成員還有意義嗎?

5樓: >>參與討論
highend
看一看 函數(shù)的調(diào)用,參數(shù)的傳遞.......
這屬于C語(yǔ)言的基本問(wèn)題



6樓: >>參與討論
computer00
rmess的值,什么時(shí)候被改變了?不是一直沒(méi)有變么?
 
7樓: >>參與討論
treul
我知道,類(lèi)型轉(zhuǎn)化是臨時(shí)的,但是:
prcv_mbx((ID)mbxid, (T_MSG**)&rmess)
中把rmess的地址作為參數(shù)傳遞給函數(shù),那么調(diào)用以后,rmess的地址上實(shí)際已經(jīng)存放了一個(gè)指向T_MSG結(jié)構(gòu)的指針了,對(duì)吧?那繼續(xù)把rmess當(dāng)作NET_MSG的指針來(lái)引用還有什么意義?rmess->e = ...

8樓: >>參與討論
computer00

你在函數(shù)prcv_mbx((ID)mbxid, (T_MSG**)&rmess) 里改變了rmess的值么?
即使你改變它的值,它的類(lèi)型也是改變不了的。
rmess的類(lèi)型始終是NET_MSG,不管它指向了那里。
所以必須要用rmess->e 來(lái)訪問(wèn)。
如果你認(rèn)為rmess指向了T_MSG,
而用rmess指向T_MSG的成員,則編譯通不過(guò)。

rmess的類(lèi)型是改不了的。如果要改,只能在用的時(shí)候,
加強(qiáng)制類(lèi)型轉(zhuǎn)換,象prcv_mbx((ID)mbxid, (T_MSG**)&rmess)里的
那個(gè)強(qiáng)制類(lèi)型轉(zhuǎn)換。

9樓: >>參與討論
treul
computer00:
謝先!

我說(shuō)了,我知道rmess的類(lèi)型沒(méi)有變。我是想說(shuō),在函數(shù)調(diào)用以后,雖然rmess的類(lèi)型沒(méi)有變(仍然是NET_MSG*),但是它實(shí)際上指向的地址處是一個(gè)T_MSG結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。你說(shuō)是嗎??因?yàn)閜rcv_mbx函數(shù)的功能就是把一個(gè)T_MSG*型的指針(也就是消息指針)存放到T_MSG**處。我覺(jué)得這時(shí)候再用rmess引用NET_MSG的成員有點(diǎn)不解~

10樓: >>參與討論
computer00
你怎么不把prcv_mbx函數(shù)貼上來(lái)?
    你不貼出來(lái),我們?cè)趺粗纏rcv_mbx是否改變了rmess的值?

11樓: >>參與討論
treul
呵呵
謝謝了computer00!

交個(gè)朋友?

那個(gè)函數(shù)是內(nèi)核了,你也知道。uITRON4的。

我大致也整明白了。Thank u!

12樓: >>參與討論
computer00
客氣
 
13樓: >>參與討論
ruanhsh
treul:你的理解是正確的
treul:你的理解是正確的,實(shí)際上,你記住一個(gè)關(guān)鍵點(diǎn),
在prcv_mbx內(nèi)部實(shí)現(xiàn),一定是將一個(gè)NET_MSG*賦值給rmess的,
只是這種賦值過(guò)程它會(huì)先通過(guò)強(qiáng)制為T(mén)_MSG*,就像你接口的類(lèi)型轉(zhuǎn)換一樣。
不然,rmess->e的就非預(yù)測(cè)的值了。
這種方法是為統(tǒng)一接口,其實(shí)做的并不是很好。


參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
奇怪的問(wèn)題,請(qǐng)教大家,在線等。!
有誰(shuí)知道在bc++4.5版集成開(kāi)發(fā)環(huán)境里如何建立工程調(diào)試ucos嗎?
求助:這段代碼是什么意思?
請(qǐng)教-- 自己做HUB用什么芯片?
網(wǎng)口濾波電容問(wèn)題
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào)