<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    _GUN_SOURCE宏

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    問題描述:在編譯程序時,提示一個錯誤和一個警告。

    errorstorage size of tz isn’t know 其中tzstruct timezone類型的變量。

    warningimplicit declaration of function lstat

     

    使用man手冊查了一下,發現tz需要加上sys/time.h頭文件,lstat需要加上sys/lstat.h頭文件,但這兩個頭文件都已經包含了,百思不得其解。

     

    無意間搜到一種解決方案,在編譯時加上-D_GNU_SOURCE(定義_GNU_SOURCE),于是照做,程序編譯通過。繼續了解了_GNU_SOURCE宏,發現它是在features.h中用于特性控制的一個功能測試宏,而上面提到的兩個頭文件sys/time.h, sys/stat.h都包含了features.h文件。

     

     

    /* If _GNU_SOURCE was defined by the user, turn on all the other features.  */

    #ifdef _GNU_SOURCE

    # undef  _ISOC99_SOURCE

    # define _ISOC99_SOURCE 1

    # undef  _POSIX_SOURCE

    # define _POSIX_SOURCE  1

    # undef  _POSIX_C_SOURCE

    # define _POSIX_C_SOURCE    200809L

    # undef  _XOPEN_SOURCE

    # define _XOPEN_SOURCE  700

    # undef  _XOPEN_SOURCE_EXTENDED

    # define _XOPEN_SOURCE_EXTENDED 1

    # undef  _LARGEFILE64_SOURCE

    # define _LARGEFILE64_SOURCE    1

    # undef  _BSD_SOURCE

    # define _BSD_SOURCE    1

    # undef  _SVID_SOURCE

    # define _SVID_SOURCE   1

    # undef  _ATFILE_SOURCE

    # define _ATFILE_SOURCE 1

    #endif

     

    其中_ISOC99_SOURCE, _POSIX_SOURCE, _XOPEN_SOURCE都是功能測試宏,用于指示是否包含對應標準的特性,而這些不同的特性源于過去20多年來進行的各種標準化工作(ANSI, ISO, POSIX, FIPS等),不同的標準支持實現了不同的特性,如系統時間的獲取,stat結構是在ANSI標準中是不支持的,而定義了_GNU_SOURCE相當于開啟了對所有特性的支持。

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全