UNIX 功能測試宏

UNIX 功能測試宏

在頭文件中定義了很多POSIX.1和XSI的符號。但是除了POSIX.1和XSI的定義之外,大多數實現在這些頭文件中也加上了它們自己的定義。如果在編譯一個程序時,希望它只使用POSIX定義而不使用任何實現自己定義的限制,那麼就需要定義常量_POSIX_C_SOURCE。所有POSIX.1頭文件中都使用此常量。當定義該常量時,就能排除任何實現專有的定義。

注:POSIX.1標準的以前版本都定義了_POSIX_SOURCE常量。在POSIX.1的2001版中,它被替換爲_POSIX_C_SOURCE。

常量_POSIX_C_SOURCE及_XOPEN_SOURCE被稱爲功能測試宏(feature test macro)。所有功能測試宏都以下劃線開始。當要使用它們時,通常在cc命令行中以下列方式定義:

cc -D_POSIX_C_SOURCE=200809L file.c

這使得C程序包括任何頭文件之前,定義了功能測試宏。如果我們僅想使用POSIX.1定義,那麼也可將源文件的第一行設置爲:

#define _POSIX_C_SOURCE 200809L

爲使Single UNIX Specification v4的XSI選項可由應用程序使用,需將常量_XOPEN_SOURCE定義爲700。除了讓XSI選項可用以外,就POSIX.1功能而言,這與將_POSIX_C_SOURCE定義爲200809L的作用相同。
Single UNIX Specification將c99實用程序定義爲C編譯環境的接口。隨之,就可以用如下方式編譯文件:

c99 -D_XOPEN_SOURCE=700 file.c -o file

可以使用-std = c99選項在gcc C編譯器中啓用1999 ISO C擴展,如下所示:

gcc -D_XOPEN_SOURCE=700 -std=c99 file.c -o file
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章