posix_memalign 的警告隐式声明

cha*_*255 5 c linux gcc posix

我在 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+click posix_memalign 它将我带到 stdlib.h 中的函数声明。为什么我会收到此警告?

我只是尝试将 dialext 更改为 std=gnu99,这解决了问题。c99 中不包含 posix_memalign 吗?

Nom*_*mal 6

#define _POSIX_C_SOURCE 200809L和其他功能测试宏有任何之前定义#include线。

这是因为宏告诉标准 C 库头文件它应该提供哪些功能来补充/代替标准 C 库功能;功能在#include.

posix_memalign()由 提供stdlib.h,但前提是启用了 POSIX.1-2001 或更高版本;这意味着定义_POSIX_C_SOURCE200112L或更大(L 在那里是因为它是一个整数常量long类型),或_XOPEN_SOURCE600或更大。

显示的错误仅发生在

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

    或者

  2. stdlib.h 不包括在内

    或者

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

在 Ubuntu 中使用 GCC,它必须是前两个之一,因为 C 库绝对提供这些 POSIX.1 特性。