#pragma 讓編譯器定義專屬指令而不干擾其他編譯器。若編譯器不識別指令名稱,會忽略且不報錯。C++ Builder 支援以下指令:
#pragma alignment、anon_struct、argsused、checkoption、codeseg、comment、defineonoption、exit、hdrfile、hdrstop、inline、intrinsic、link、message、nopushoptwarn、obsolete、option、pack、package、resource、startup、undefineonoption、warn#pragma message("文字") — 編譯期輸出訊息最實用指令之一,在編譯輸出視窗顯示自訂訊息,便於追蹤巨集定義狀態:
#ifdef _X86
#pragma message("_X86 macro activated!")
#endif
定義 _X86 後編譯會顯示訊息,避免忘記巨集設定。
#pragma code_seg("section-name"[, "section-class"]) — 設定程式碼區段指定函數程式碼存放區段,開發驅動程式常用。
#pragma once — 單次編譯保護置於標頭檔開頭,確保該檔僅被編譯一次。VC6 起支援,現代專案廣泛使用,替代傳統 #ifndef 保護。
#pragma hdrstop — 預編譯標頭截止點BCB 可預編譯標頭加速連結,但全編譯佔空間。此指令標示預編譯截止,後續標頭不預編譯。
#pragma startup — 指定編譯優先順序單元間有依賴時 (如 A 依賴 B),配合 #pragma package(smart_init) 依優先順序編譯。
#pragma resource "*.dfm" — 納入表單資源將 .dfm (視窗外觀定義) 資源加入專案。
#pragma warning — 警告控制大師// 單行多設定等價寫法
#pragma warning(disable: 4507 34; once: 4385; error: 164)
// 分行寫法
#pragma warning(disable: 4507 34) // 隱藏 4507、34 號警告
#pragma warning(once: 4385) // 4385 號警告僅報告一次
#pragma warning(error: 164) // 164 號警告視為錯誤
#pragma warning(push [, n]) // 保存當前警告狀態,可選設定全域等級 n (1-4)
#pragma warning(pop) // 還原上一個 push 狀態,中間改動取消
// 範例:區域性停用警告
#pragma warning(push)
#pragma warning(disable: 4705)
#pragma warning(disable: 4706)
#pragma warning(disable: 4707)
// ... 某段程式碼 ...
#pragma warning(pop) // 完全還原 4705/4706/4707 等警告狀態
#pragma comment(...) — 物件/執行檔嵌入註解常用 lib 關鍵字自動連結庫檔:
#pragma comment(lib, "mylib.lib")
編譯時自動將 mylib.lib 加入連結器輸入,免去專案設定手動添加。