警告posix_memalign的隐含声明

时间:2015-09-07 12:15:59

标签: c linux gcc posix

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

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中吗?

1 个答案:

答案 0 :(得分:4)

必须在任何#define _POSIX_C_SOURCE 200809L行之前定义#include和其他feature test macros

这是因为宏告诉标准C库头部它应该提供哪些功能,而不是标准C库功能;功能在#include点“锁定”。

{p> posix_memalign()stdlib.h提供,但仅在启用POSIX.1-2001或更高版本时提供;这意味着将_POSIX_C_SOURCE定义为200112L或更大(L是因为它是long类型的整数常量),或_XOPEN_SOURCE 600或更大

显示的错误仅在

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

  2. stdlib.h未包含在内

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

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