關於UNIX功能測試巨集

2021-09-23 13:43:39 字數 846 閱讀 9787

unix的

功能測試巨集,在標頭檔案中定義了很多posix.1和xpg3的符號。但是除了posix.1和xpg3定義外,大多數實現在這些標頭檔案中也加上了他們自己的定義。如果在編譯乙個程式時,希望它只是用posix定義而不使用任何實現定義的限制,那麼就需要定義常數_posix_source,所有posix.1標頭檔案中都是用此常數。當該常數定義時,就能排除任何實現專有的定義。

常數_posix_source及對應的常數_xopen_source被稱為功能性測試巨集(feature 

testmacro)。所有功能測試巨集都以下劃線開始。要使用他們時,通常在cc命令列中以下列方式定義:

cc -d_posix_source file.c

這使得在c程式包括任何標頭檔案之前,定義了功能測試巨集。如果我們僅想用posix.1定義,那麼也可以將原始檔的第一行設定為:

#define _posix_source 1

另乙個功能測試巨集是:__stdc__,它由符合ansi c標準的編譯程式自動定義。這樣就允許我們編寫ansi c編譯程式和非ansi c編譯程式都能編譯的程式。例如,乙個標頭檔案可能會是:

void *myfunc(const char*, int);

#else

void *myfunc();

#endif

#ifdef __stdc__

void *myfunc(const char*, int);

#else

void *myfunc();

#endif

這樣就能發揮ansi c原型功能的長處,要注意在開始和結束的兩個連續的下劃線常常列印成乙個長下劃線。

功能測試巨集

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

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

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

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

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