qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          關(guān)于UNIX功能測試宏

          UNIX的功能測試宏,在頭文件中定義了很多POSIX.1和XPG3的符號。但是除了POSIX.1和XPG3定義外,大多數(shù)實(shí)現(xiàn)在這些頭文件中也加上了他們自己的定義。如果在編譯一個(gè)程序時(shí),希望它只是用POSIX定義而不使用任何實(shí)現(xiàn)定義的限制,那么就需要定義常數(shù)_POSIX_SOURCE,所有POSIX.1頭文件中都是用此常數(shù)。當(dāng)該常數(shù)定義時(shí),就能排除任何實(shí)現(xiàn)專有的定義。
            常數(shù)_POSIX_SOURCE及對應(yīng)的常數(shù)_XOPEN_SOURCE被稱為功能性測試宏(feature test macro)。所有功能測試宏都以下劃線開始。要使用他們時(shí),通常在cc命令行中以下列方式定義:
            cc -D_POSIX_SOURCE file.c
            這使得在C程序包括任何頭文件之前,定義了功能測試宏。如果我們僅想用POSIX.1定義,那么也可以將源文件的第一行設(shè)置為:
            #define _POSIX_SOURCE 1
            另一個(gè)功能測試宏是:__STDC__,它由符合ANSI C標(biāo)準(zhǔn)的編譯程序自動(dòng)定義。這樣就允許我們編寫ANSI C編譯程序和非ANSI C編譯程序都能編譯的程序。例如,一個(gè)頭文件可能會(huì)是:
          void *myfunc(const char*, int);
          #else
          void *myfunc();
          #endif
          #ifdef __STDC__
          void *myfunc(const char*, int);
          #else
          void *myfunc();
          #endif
            這樣就能發(fā)揮ANSI C原型功能的長處,要注意在開始和結(jié)束的兩個(gè)連續(xù)的下劃線常常打印成一個(gè)長下劃線。

          posted on 2014-09-16 09:51 順其自然EVO 閱讀(264) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

          <2014年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 武胜县| 南昌县| 安仁县| 青浦区| 星座| 闽清县| 泾川县| 深泽县| 定远县| 河源市| 会宁县| 甘孜| 舟山市| 方正县| 长垣县| 恩平市| 新乡县| 黎川县| 克东县| 南昌县| 定州市| 白玉县| 井冈山市| 崇仁县| 武强县| 青铜峡市| 龙游县| 忻州市| 贡嘎县| 林甸县| 从江县| 苗栗市| 安阳县| 舟曲县| 磐安县| 吉水县| 天等县| 安康市| 丁青县| 香格里拉县| 清流县|