gpt4 book ai didi

c - posix_memalign 的警告隐式声明

转载 作者:IT王子 更新时间:2023-10-29 01:21:21 36 4
gpt4 key购买 nike

我在 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,这解决了问题。 posix_memalign 不包含在 c99 中吗?

最佳答案

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

这是因为宏告诉标准 C 库头它应该提供哪些功能来补充/代替标准 C 库功能;这些功能在 #include 处被“锁定”。

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 特性

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

关于c - posix_memalign 的警告隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32438554/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com