qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          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=200112 file.c
            這使得C程序包括任何頭文件之前,定義了功能測試宏。如果我們僅想使用POSIX.1定義,那么也可將源文件的第一行設置為:
            #define _POSIX_C_SOURCE 200112
            為使Single UNIX Specification v3的功能可由應用程序使用,需將常量_XOPEN_SOURCE定義為600。
            Single UNIX Specification將c99實用程序定義為C編譯環境的接口。隨之,就可以用如下方式編譯文件:
            c99 -D_XOPEN_SOURCE=600 file.c -o file
            為了在gcc C編譯器中啟用1999 ISO C擴展,可以使用-std = c99選項,如下所示:
            gcc -D_XOPEN_SOURCE=600 -std=c99 file.c -o file
            另一個功能測試宏是:__STDC__,它由符合ISO C標準的C編譯器自動定義。這樣就允許我們編寫ISO C編譯器和非ISO C編譯器都能編譯的程序。例如,為了利用ISO C原型功能(如果支持),一個頭文件可能包含:
          #ifdef __STDC__
          void *myfunc( const char *, int );
          #else
          void *myfunc();
          #endif
            雖然,當今的大多數C編譯器都支持ISO C標準,但在很多頭文件中仍舊使用__STDC__功能測試宏。

          posted on 2014-11-04 10:16 順其自然EVO 閱讀(258) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆子县| 榆社县| 贡觉县| 木兰县| 鄯善县| 延津县| 嵊州市| 临潭县| 沾化县| 彭州市| 叶城县| 苗栗县| 米脂县| 石泉县| 达州市| 维西| 紫阳县| 仁寿县| 阳新县| 涡阳县| 北京市| 西吉县| 巴东县| 平定县| 扎囊县| 抚松县| 巍山| 耒阳市| 西藏| 临泉县| 贵南县| 东乌珠穆沁旗| 临颍县| 宝兴县| 吴旗县| 逊克县| 石台县| 杭州市| 柘城县| 镇平县| 安福县|