全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1720
推到 Plurk!
推到 Facebook!

C 語言巨集問題

缺席
yshihyu
一般會員


發表:23
回覆:18
積分:8
註冊:2006-11-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-22 02:07:18 IP:59.104.xxx.xxx 訂閱
#define VH (*(int far*)0x450) // 怎麼去解釋它 , 是far 指標指向450位址嗎?? //它是放在標頭檔內
VH 就可以直接把 int 型態的值存到450位址裡面嗎??? 我搞不懂的是450 位址記憶體會不會有其他程式在使用??? 如果直接把值存入
不是有問題
#define VH (*(int far*)0x450) // 改成 #define VH (*(int *far)0x450) 可以嗎?? // 因為一般指標宣告不是 int * far ... 怎麼巨集中會用int far*
還有#define VH (*(int far*)0x450) // 直接在巨集中(int far *) 這樣算是有需宣個指標變數嗎??
要巨集做法是用在哪邊????

#include
#include

#define VH (*(int far*)0x450)
int main(int argc, char *argv[])
{

VH = 400;
printf("%d\n",VH);
system("PAUSE");
return 0;
}

出現錯誤 syntax error before "far"
想知道這樣的巨集要如何使用它
謝謝



jesse_chao
一般會員


發表:2
回覆:9
積分:2
註冊:2003-12-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-24 01:41:45 IP:61.224.xxx.xxx 訂閱
(int far)是資料型態,(int far*)0x450是一個被固定了沒有名稱的指標,(*(intfar*)0x450)是這個指標所指向的資料內容,
0x450就是指標所在的位址。
至於#define的話可能請你去翻翻書會比較好,可以跟你說的是
VH = 400;這裡才宣告並給定初值。
0x450會不會有人用?這個程式怎麼看都像嵌入式在用的,位址大約都規劃好了吧。
希望以上對你有點幫助。

===================引 用 文 章===================
#defineVH(*(intfar*)0x450) // 怎麼去解釋它 , 是far 指標指向450位址嗎?? //它是放在標頭檔內
VH 就可以直接把 int 型態的值存到450位址裡面嗎??? 我搞不懂的是450 位址記憶體會不會有其他程式在使用??? 如果直接把值存入
不是有問題
#defineVH(*(intfar*)0x450) // 改成 #defineVH(*(int*far)0x450) 可以嗎?? // 因為一般指標宣告不是 int * far ... 怎麼巨集中會用int far*
還有#defineVH(*(intfar*)0x450) // 直接在巨集中(int far *) 這樣算是有需宣個指標變數嗎??
要巨集做法是用在哪邊????

#include
#include

#defineVH(*(intfar*)0x450)
int main(int argc, char *argv[])
{

VH = 400;
printf("%d\n",VH);
system("PAUSE");
return 0;
}

出現錯誤syntax error before "far"
想知道這樣的巨集要如何使用它

謝謝


stanely
一般會員


發表:1
回覆:8
積分:1
註冊:2002-07-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-02 22:09:31 IP:218.168.xxx.xxx 未訂閱
syntax error near far.

你在什麼環境下compile這個程式呢?
看樣子你用的compiler並不支援far這個keyword.
------
I like linux.
I like programming.
I like everything.
系統時間:2024-04-30 20:21:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!