我在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
。
显示的错误只发生在
包含stdlib.h
时未定义宏
要么
不包括stdlib.h
要么
C库实现不提供POSIX.1功能
在Ubuntu中使用GCC,它必须是前两个之一,因为C库肯定会提供这些POSIX.1功能。