看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 為了方便將1個DWORD拆成4個byte處理,我製做了一個集合: union UserType { unsigned char _BYTE[4]; unsigned int _DWORD; }; 然後有一個專案中用到"FuncA.cpp"、"FuncB.cpp"、"FuncC.cpp", 且三個檔案中都會用到上述集合,一種作法是將該集合製作出新的 檔案"UserType.h"然後讓三個檔案都引用"UserType.h"。 但除此之外,有沒有辦法讓"FuncA.cpp"、"FuncB.cpp"、"FuncC.cpp" 都在內部定義"UserType"這個集合,並且讓編譯器知道當宣告"UserType" 型態變數的時候,是指該檔案中自己的"UserType"。 我試著再union前加入static,但似乎沒效果,編譯器還是跑出重複定義 的錯誤。 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.212.239
stupid0319:這樣真的有比較方便嗎?? 05/05 16:03
firejox:typedef? 05/05 16:10
linotwo:如果 header 檔都沒有放 UserType 的宣告,應該不會有問題 05/05 16:35
linotwo:或是在各自的 cpp 裡面用不同的命名宣告,保證不會重複 05/05 16:37
linotwo:如果有在各自的 header 檔宣告 UserType 05/05 16:39
linotwo:可以用下列方式把宣告部分包起來 05/05 16:40
linotwo:#ifndef UNION_USERTYPE_HAS_BEEN_DEFINED 05/05 16:41
linotwo:#define UNION_USERTYPE_HAS_BEEN_DEFINED 05/05 16:41
linotwo:(宣告UserType) 05/05 16:42
linotwo:#endif // UNION_USERTYPE_HAS_BEEN_DEFINED 05/05 16:42
LPH66:其實你如果知道 #include 只不過是幫你剪貼而已的話 05/05 19:34
LPH66:就會知道即使自己貼和用 #include 的效果是一樣的了 05/05 19:35