警告Impix声明posix_memalign

我在Ubuntu 15.04上使用GCC 4.9。 我在eclipse CDT编码。 这是一个C语言程序,方言设置为c99。 出于某种原因,我的编译器不断警告我这个…

warning: implicit declaration of function 'posix_memalign' [-Wimplicit-function-declaration]

我不知道为什么。 我有#include<stdlib.h>在顶部,当我使用eclipse ctrl +单击posix_memalign它将我带到stdlib.h中的函数声明。 为什么我得到这个警告?

我只是试图更改dialext到std = gnu99,并解决了这个问题。 是posix_memalign不包括在c99中?

#define _POSIX_C_SOURCE 200809L和其他功能测试宏必须在任何#include行之前定义。

这是因为这些宏告诉标准C库头文件除了标准C库函数之外还应该提供哪些功能。 这些特征在#include的位置被“锁定”。

posix_memalign()stdlib.h提供,但前提是POSIX.1-2001或更高版本已启用; 这意味着将_POSIX_C_SOURCE定义为200112L或更大(因为它是long类型的整数常量,所以L是存在的),或者具有600或更大的_XOPEN_SOURCE

显示的错误只发生在

  1. 包含stdlib.h时未定义宏

    要么

  2. 不包括stdlib.h

    要么

  3. C库实现不提供POSIX.1功能

在Ubuntu中使用GCC,它必须是前两个之一,因为C库肯定会提供这些POSIX.1功能。