zoukankan      html  css  js  c++  java
  • _GNU_SOURCE宏

    打开_GNU_SOURCE这个宏可以打开一些功能,比如为了在Linux系统上编译使用带有检测文件type的宏(S_ISxxxx):

    S_ISREG() //传入stat结构的st_mode,下同。是否为普通文件

    S_ISDIR() //是否为目录

    S_ISLNK() //是否为符号链接

    S_ISSOCK() //是否为套接字

    这样子就能包含了上述宏的定义。

    在编写网络程序时,会涉及到一些关于BSD系统保留下的结构体和宏定义,关于一切配置在linux系统的/usr/include/features.h文件中,开启项如下:

    #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        199506L
    # undef 
    _XOPEN_SOURCE
    # define _XOPEN_SOURCE  600
    # 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
    #endif

    可以看出只要开启了_GNU_SOURCE的花,大部分的BSD功能可以打开,看看_GNU_SOURCE是否开启有一个测试程序:

    #include <iostream>
    int main() {

    #ifdef _GNU_SOURCE  

    std::cout << "gnu/n";

    #else  

    std::cout << "non-gnu/n";

    #endif

    }

    只要gcc -D _GNU_SOURCE test.c -o test.o编译生成的text.o文件,运行一下就知道是否开启了

  • 相关阅读:
    《web-Mail服务的搭建》
    VMware虚拟机三种联网方法及原理
    Java总结——常见Java集合实现细节(1)
    nginx静态资源缓存策略配置
    算术验证
    JPA学习
    Spring中AOP实现
    转:Spring中事物管理
    使用docker发布spring cloud应用
    综合使用spring cloud技术实现微服务应用
  • 原文地址:https://www.cnblogs.com/soaringEveryday/p/3522701.html
Copyright © 2011-2022 走看看