嵌入式Linux系统:应用开发基础_get_current_dir_name编译警告

 

get_current_dir_name编译警告

以下是我最近要用的一个函数,可是编译时出现了一个警告:
代码:
#include
#include
#define _GNU_SOURCE
int main(int argc,char *argv[])
{
        char *path;
        path=get_current_dir_name();
        printf("%s>\n",path);
        exit(0);
}
$gcc test.c
test.c: In function `main':
test.c:9: warning: assignment makes pointer from integer without a cast

查看过手册,里面是说
get_current_dir_name, which is only prototyped if _GNU_SOURCE is defined, will malloc(3) an array big enough to hold the current directory name. If the environment variable PWD is set, and its value is correct, then that value will be returned.
找到了友人的答案:
明白了,宏定义的位置应该放在unistd.h的前面,才能起作用。-----------放在所有#include的前面。


代码:
#define  _GNU_SOURCE
#include
#include
#define _GNU_SOURCEint main(int argc,char *argv[])
{
        char *path;
        path = get_current_dir_name();
        printf("%s>\n",path);
        exit(0);
}

用gcc -E将预处理的代码导出来查看,如果宏定义的位置不正确。
导出的代码中不会包含get_current_dir_name()的函数原型,自然编译就认为它的返回值是默认的整数,从而导致一个警告。
把宏定义放在前面之后,gcc -E导出的代码中已经包含了正确的函数原型,警告就不会出现了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
嵌入式Linux应用开发完全手册-韦东山全系列视频文档全集》是一本详尽的嵌入式Linux应用开发方面的丛书,配套有韦东山老师的全系列视频文档。该书通过理论结合实践的方式,全面介绍了嵌入式Linux应用开发基础知识和技术实践。 本书首先从基本概念出发,介绍了嵌入式系统的特点、分类及发展历程。接着详细介绍了嵌入式Linux系统的构建和配置,包括交叉编译环境的搭建、Linux内核的配置和编译等内容。在此基础上,书中介绍了Linux驱动程序的开发与调试技术,包括字符设备驱动、块设备驱动等。同时,书中还重点介绍了Linux应用程序的开发技术,包括进程管理、文件系统、网络编程等方面的内容。 该书的特点是理论与实践相结合,通过丰富的实例帮助读者更好地理解和掌握嵌入式Linux应用开发基础知识和技术。配套的视频文档则更加生动形象地展示了实验环境的搭建和实际操作过程,有助于读者更加深入地理解和掌握相关技术。 总之,《嵌入式Linux应用开发完全手册-韦东山全系列视频文档全集》是嵌入式Linux应用开发领域的一本综合性教材。对于从事嵌入式Linux应用开发工作的工程师和学习Linux嵌入式系统的学生来说,是一本不可多得的宝典。无论是初学者还是有一定经验的开发者,都能在这本书中找到自己所需的知识和实践指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值