English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

這是我從mfc 裡的 afxwin.h

擷取出來的一小段程式碼

來當作我的問題

#ifndef __AFXWIN_H__
#ifndef RC_INVOKED
#define __AFXWIN_H__
#ifndef __AFX_H__
#include
#endif

假如 __AFXWIN_H__ 沒有定義的話 這段程式碼什麼意思 不太了解

我所知道的定義 舉例:
define afxwin 5

define afxwin int

可是最上面的那一段 假如沒有定義 說也奇怪 他明明就是第一行 也不可能
有人在他之前定義阿

還有再後面 它確實有再定義一次 #define __AFXWIN_H__

可是 這.... 可是這到底是定義了他做什麼 看不太懂

第2個問題是 我有看到一個 afx_msg

他常常出現在 程式裡面的函數最前面

例如:afx_msg void OnFileClose();

這個afx_msg 到底是什麼意思阿 我看了一下

他的定義 我也是有看 不知所以然

請指教一下 謝謝

2006-07-19 19:56:01 · 3 個解答 · 發問者 1 in 電腦與網際網路 程式設計

3 個解答

當我們想在編譯時想依某些條件取捨要編譯或不編譯一些程式碼時都可以使用這種技巧,在這邊應該是為了防止一些標頭檔被重覆include.先檢查有沒有define某個東西xxx,發現沒有define的話,表示那個標頭檔比方xxx.h還沒被include過(在被include的標頭檔內有define xxx),此時就可以include,當另一個檔也這樣寫,但比較晚被編譯到的時候,compiler檢查到之前xxx已define過了,#ifndef到#endif間的code,也就是#include 之類的,都不會被編譯,才不會有重複定義的問題.你說第一行沒有人在它之前,但一個project會有很多檔,可能好幾個都include xxx.h,先編譯到的就已define了,後編譯到的第一行的判斷就有用囉!這種的define並非真的程式裏面需要用到它的定義,只是用來判斷有沒有被定義,所以有沒有定成什麼就沒關係.afx_msg的定義也是空的,所以不必理它,寫afx_msg void OnFileClose();就相當於void OnFileClose();它的註解是 intentional placeholder也就是故意佔一個位置,預備以後的版本或許用的到.

2006-07-19 22:33:42 · answer #1 · answered by chan 5 · 0 0

【亞洲36588合法彩券公司直營 官網: A36588.NET 】

【 最新活動→迎接新會員,首存狂送20% 】

【運動→電子→對戰→現場→彩球 】

【免費服務 →電影區、討論區、KTV歡唱、運動轉播、即時比分、24H客服 】

【亞洲36588合法彩券公司直營 官網: A36588.NET 】

2014-08-17 17:42:11 · answer #2 · answered by Anonymous · 0 0

to 王子殿下:
您有來信問我關於我說的產業的問題。
但是您沒開放接受來信我沒辦法回信給您喔!

2006-07-25 13:07:58 · answer #3 · answered by Sam 6 · 0 0

fedest.com, questions and answers