嗯
竟然這是基本功,那麼當然要練一下了
參考網路上的範例
自己重新實驗,利用結構指標進副程式,結構出副程式
union f2bbbb
{
float _;
struct
{
char b1;
char b2;
char b3;
char b4;
};
};
struct ATTITUDE{
union f2bbbb roll;
union f2bbbb pitch;
};
struct ATTITUDE get_attitude_from_accel(struct ATTITUDE *_att,int ax,int ay,int az)
{
_att->roll._ += ax;
_att->pitch._ += ay;
return *_att;
}
int main(void){
struct ATTITUDE _btt;
float k;
_btt=get_attitude_from_accel(&_btt,1,2,3);
k=_btt.pitch._;
k=_btt.roll._;
return 0;
}
嗯,這樣似乎沒有多大的問題
再修改一下,利用結構進副程式,結構出副程式
union f2bbbb
{
float _;
struct
{
char b1;
char b2;
char b3;
char b4;
};
};
struct ATTITUDE{
union f2bbbb roll;
union f2bbbb pitch;
};
struct ATTITUDE get_attitude_from_accel(struct ATTITUDE _att,int ax,int ay,int az)
{
_att.roll._ += ax;
_att.pitch._ += ay;
return _att;
}
int main(void){
struct ATTITUDE _btt;
float k;
_btt=get_attitude_from_accel(_btt,1,2,3);
k=_btt.pitch._;
k=_btt.roll._;
return 0;
}
嗯,這樣似乎沒有多大的問題
再修改一下,利用結構指標進副程式,結構指標出副程式
union f2bbbb
{
float _;
struct
{
char b1;
char b2;
char b3;
char b4;
};
};
struct ATTITUDE{
union f2bbbb roll;
union f2bbbb pitch;
};
struct ATTITUDE get_attitude_from_accel(struct ATTITUDE *_att,int ax,int ay,int az)
{
_att->roll._ += ax;
_att->pitch._ += ay;
return *_att;
}
int main(void){
struct ATTITUDE *_btt;
float k;
*_btt=get_attitude_from_accel(_btt,1,2,3);
k=_btt->pitch._;
k=_btt->roll._;
return 0;
}
問題來了,執行這樣的副程式竟然會出錯!
摸不著頭緒@@
不知道為什麼這樣的指標結溝沒有辦法正常運作
原來-> 這個符號不是c++才擁有的@@ 原來c語言就有這個符號了
另外就是
以前以為struct 和union 只能這樣用
原來struct 和union 是可以反過來用@@
這樣的結構方式真的還滿好用的
奇怪@@才剛過完年,我怎麼好像有好多作業喔
呵呵~
不過還滿好玩的就是了
聽說今天只有8度?超級冷的啦!!!!!
實驗室是冰箱吧!!!!!!!!!!
老闆,可以申請暖器機嗎?
哈哈
呵...我在robotfun的po文也會被你挖出來...網路真小。
回覆刪除[版主回覆02/20/2010 09:52:03]你在ptt、microchip我都有看到你的蹤跡喔