Re: [問題] select()用到的timeval

看板C_and_CPP作者 (egoist)時間15年前 (2010/10/05 11:21), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串2/4 (看更多)
感謝上篇推文中的回答, 的確用推文的方找到了, 不過我有另外的問題, 假設我有程式如下: #include <sys/time.h> void main(int argc, char* argv[]) { struct timeval AAA; } 用gcc -E來編輯並輸出至另外檔案之後, 可以發現 #include <sys/time.h>被換成很多奇奇怪怪的程式碼. 就我本來的認知, 就是把sys/time.h內的程式(或是說, 宣告)貼上去而已, 但是仔細一看發現其實gcc -E輸出的東西與直接跑進去看sys/time.h的程式碼不一樣, 看來好像是我的觀念錯誤了, 請問這是要怎麼解釋呢? : 我用的是ubuntu 10.04, : 現在正在學習socket programming裡面的select(). : 有個struct叫做timeval, 我看資料他定義在sys/time.h裡面, : 但是我有找到time.h, 卻沒看到timeval的定義, 不知道有人可以告訴我一下嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 146.115.81.149

10/05 11:34, , 1F
假設說1.h有一段內容,位於 #ifndef ptt_cpp 跟 #endif 間
10/05 11:34, 1F

10/05 11:35, , 2F
你有include此標頭檔,會先貼上,接著做前置處理,發現有
10/05 11:35, 2F

10/05 11:35, , 3F
#ifndef 這類指令,就要先運行,所以視 ptt_cpp 有無被定
10/05 11:35, 3F

10/05 11:36, , 4F
義,會影響最後 gcc -E 產生出來的內容。
10/05 11:36, 4F

10/05 12:00, , 5F
想太多 = =
10/05 12:00, 5F

10/05 13:51, , 6F
簡單說就是你忘了考慮 preprocessor directive
10/05 13:51, 6F
文章代碼(AID): #1Cgfd1SH (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Cgfd1SH (C_and_CPP)