[問題] 跨檔案 #define 的一個小問題

作者: qas612820704 (Lego)   2014-07-24 01:34:33
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
如題
node.h node.c
作者: soheadsome (師大狗鼻哥)   2014-07-24 01:57:00
#ifndef #define
作者: Killercat (殺人貓™)   2014-07-24 01:59:00
keyword : Include Guard <==查一下這個關鍵字另外別學壞用#pragma once, 這個M$ only 別用這個....剛查了一下 GCC跟clang居然支援了 真詭異
作者: scwg ( )   2014-07-24 02:20:00
queue.c includes queue.h, which includes node.h 怎麼會看不到 DATATYPE 呢? 除非有奇怪的 preprocessor directives不然 #include 只是單純的內文展開, 多重 include 會統統拉到最上層
作者: Killercat (殺人貓™)   2014-07-24 02:38:00
誒,我發現我誤解元po的問題了,請跳過我 XD
作者: legendmtg (CLANNAD)   2014-07-24 09:53:00
#pragma once應該是各大編譯器都有支援了而且效率似乎比較好 所以也有人是建議使用
作者: azureblaze (AzureBlaze)   2014-07-24 10:10:00
once沒進標準是因為"同個檔案"在某些平台難以定義inclusion guard若編譯器有作特別處理效率其實差不多
作者: Killercat (殺人貓™)   2014-07-24 11:23:00
其實gcc -E出來應該結果都一樣...會有效能差嘛別告訴我gcc expand macros會多花幾個毫秒... XD
作者: azureblaze (AzureBlaze)   2014-07-24 11:27:00
once可以連開檔都省略掉 檔案夠多會差一點點XD
作者: scwg ( )   2014-07-25 03:59:00
不管是 Eclipse 還是去 command line 用 gcc, 出錯想找問題一定得看錯誤訊息. 真的是DATATYPE的問題嗎? 還是哪裡少分號?

Links booklink

Contact Us: admin [ a t ] ucptt.com