看板 C_and_CPP 關於我們 聯絡資訊
感謝上篇推文中的回答, 的確用推文的方找到了, 不過我有另外的問題, 假設我有程式如下: #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
purpose:假設說1.h有一段內容,位於 #ifndef ptt_cpp 跟 #endif 間 10/05 11:34
purpose:你有include此標頭檔,會先貼上,接著做前置處理,發現有 10/05 11:35
purpose:#ifndef 這類指令,就要先運行,所以視 ptt_cpp 有無被定 10/05 11:35
purpose:義,會影響最後 gcc -E 產生出來的內容。 10/05 11:36
manlike:想太多 = = 10/05 12:00
LPH66:簡單說就是你忘了考慮 preprocessor directive 10/05 13:51