標準測試巨集選項

2021-10-05 03:57:52 字數 1128 閱讀 9691

系統呼叫和庫函式的標準有多種多樣(unix 、posix、bsd、v等),為了使我們編寫的程式具有高度的相容性,在編譯時需要指定或弄清楚程式所在執行環境的型別。在程式設計時,在引進標頭檔案之前利用#ifdef語句來判斷程式執行環境並分別引用不同的標頭檔案。然後在命令列編譯時,提供指定選項來設定本次編譯的環境。

$ cc -d_bsd_source prog.c
_posix_c_source

遵循的標準

1posix.1-1990和iso c(1990)

199309

posix.1b(realtime)

199506

posix.1c(threads)

200112

posix.1-2001(xsi擴充套件)

200809

posix.1-2008

_xopen_source

遵循的標準

<500

posix.1、posix.2、x/open(xpg4)

500susv2(unix98和xpg5)

600susv3 xsi(unix03)和c99

700susv4 xsi

在乙個程式中,如果遵循posix.1-2001/susv3標準,則同時設定_posix_c_source=200112及_xopen_source=600。類似的,如果如果遵循posix.1-2008/susv4標準設定_posix_c_source=200809及_xopen_source=700。

_bsd_source

遵循的標準

任意值bsd標準;效果同將_posix_c_source設定為199506

_svid_source

遵循的標準

任意值系統v介面定義標準(svid)

_gnu_source

遵循的標準

任意值上文所述所有標準均相容

$ cc -d_posix_source -d_posix_c_source=199506 -d_bsd_source -d_svid_source prog.c

嵌入式linux&arm

csdn部落格

知乎專欄

gcc D選項定義巨集

gcc的 d選項可以定義巨集。假設程式需要很多巨集,不可能這些巨集都在編譯器中定義,可以說比較重要的巨集才會放在gcc的d選項後邊。dname 定義巨集name,預設定義內容為字串 1 dname defn 定義巨集name,並且內容為defn 測試程式 include int main 執行編譯命...

gcc D選項 巨集定義

dname 定義巨集name,預設定義內容為字串 1 dname defn 定義巨集name,並且內容為defn c語言中使用 define來定義巨集,gcc也可以定義巨集給源 使用。不過gcc d選項就簡陋很多,和 define的簡單用法是一致的。但是其本質是巨集的替換。應該是在預處理階段直接替換...

UNIX標準化及實現之功能測試巨集

在標頭檔案中定義了很多posix.1和xsi的符號。但是除了posix.1和xsi的定義之外,大多數實現在這些標頭檔案中也加上了它們自己的定義。如果在編譯乙個程式時,希望它只使用posix定義而不使用任何實現自己定義的限制,那麼就需要定義常量 posix c source。所有posix.1標頭檔案...