[問題] 自訂Head檔中#ifndef的問題

看板C_and_CPP作者 (不下棋)時間11年前 (2014/03/12 17:28), 編輯推噓2(205)
留言7則, 7人參與, 最新討論串1/1
這是網路上抓的改寫CStatic的head檔寫法 請問為什麼最前面要加上 #ifndef _TSTATIC_H_ #define _TSTATIC_H_ 這有什麼意義嗎? #ifndef _TSTATIC_H_ #define _TSTATIC_H_ // TStatic class TStatic : public CStatic { DECLARE_DYNAMIC(TStatic) private: COLORREF m_textcolor; COLORREF m_bkcolor; CBrush m_brush; CFont m_Font; public: TStatic(); virtual ~TStatic(); CString m_text; void SetTextColor(COLORREF); void SetBkColor(COLORREF); void SetText(CString); void ChangeFont(CString fontstyle="新細明體", int Size=12, BYTE lfItalic=0, LONG lfWeight=FW_NORMAL); protected: DECLARE_MESSAGE_MAP() public: afx_msg LRESULT OnChangeText(WPARAM, LPARAM); afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); }; #endif -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.141.134.23

03/12 17:30, , 1F
請搜尋"include guard"
03/12 17:30, 1F

03/12 17:36, , 2F
雖然有點無關不過我要指出 define 前面有底線不是好作法
03/12 17:36, 2F

03/12 17:38, , 3F
可以用在##
03/12 17:38, 3F

03/12 18:18, , 4F
我能請問一下為什麼有底線不好嗎?
03/12 18:18, 4F

03/12 19:05, , 5F
有時底線開頭會是系統定義預設的defined
03/12 19:05, 5F

03/12 20:11, , 6F
避免被incude兩次以上
03/12 20:11, 6F

03/30 16:30, , 7F
VC在header一開始加#pragma once即可
03/30 16:30, 7F
文章代碼(AID): #1J82Yjwi (C_and_CPP)