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

看板C_and_CPP作者 (egoist)時間15年前 (2010/10/06 05:48), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串3/4 (看更多)
感謝上篇推文中的回答, 我大概 到preprocessor的用法, 但是我仍有疑問, 我在用gcc -E看的時候, 可以發現有 struct timeval {__time_t tv_sec; __suseconds_t tv_usec;}; 的structure宣告, 但是在sys/time.h則完全沒有這樣的宣告. 據我的了解, preprocessor如#ifdef, 頂多是把"已經寫在header裡面的某些東西"不compile而已 不會自動產生出code來, 所以應該我要能在header的.h檔當中直接找到如上的structure宣告才對吧? : 感謝上篇推文中的回答, 的確用推文的方找到了, : 不過我有另外的問題, 假設我有程式如下: : #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: 140.247.45.9

10/06 07:53, , 1F
header 檔還會 #include 其它 header 檔。
10/06 07:53, 1F

10/06 07:53, , 2F
一層一層追太麻煩了,所以才叫你直接 gcc -E 看。
10/06 07:53, 2F

10/06 07:54, , 3F
其實你也可以用 find 搭配 grep 在 /usr/include 下用暴力
10/06 07:54, 3F

10/06 07:55, , 4F
法去掃,或是一些 trace code 用的 tools。
10/06 07:55, 4F

10/06 07:55, , 5F
或是看看你的 man pages 裡有沒有寫它放在哪。
10/06 07:55, 5F

10/06 09:47, , 6F
http://ppt.cc/;X7N 我懶得切到Linux,沒確認,但內容應
10/06 09:47, 6F

10/06 09:48, , 7F
該樣,綜合這篇t大所說,還有第一篇x大所說,你要找的東西
10/06 09:48, 7F

10/06 09:49, , 8F
在這 http://ppt.cc/(M2- 就是透過x大說的28行 include...
10/06 09:49, 8F

10/06 11:52, , 9F
p大我點你的網址進去好像沒東西可以看耶, 我的意思是
10/06 11:52, 9F

10/06 11:53, , 10F
雖然能進去code search頁面, 但是只是停在time.h而已
10/06 11:53, 10F
文章代碼(AID): #1Cgvr9Sq (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Cgvr9Sq (C_and_CPP)