我是靠谱客的博主 轻松乌龟,最近开发中收集的这篇文章主要介绍gcc下编译出现warning:implicit declaration of function 'strdup'和warning:implicit declaration of function 'gethostname',觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       最近在linux下编译程序的时候遇到了几个让人很奇怪的警告,在这儿记录下来,和大家分享一下。我用的是Ubuntu 9.10的系统以及系统自带的gcc编译器。

       在我的程序中用到了strdup和gethostname这两个函数,编译命令是:

           gcc -c -std=c99 myfilename.c

       编译器就会给出warning:implicit declaration of function 'strdup'和warning:implicit declaration of function 'gethostname'的警告

       开始的时候我很奇怪为什么会出现这种警告,因为我已经包含了应该包含的头文件,我甚至去看了这两个头文件的内容,里面也有这两个函数的声明。于是我开始在网上寻找答案,网上的一个帖子说c99标准中没有strdup函数(帖子的连接http://www.unixresources.net/linux/clf/program/archive/00/00/62/11/621140.html#article621188)。

       然后我就想gethostname函数是不是因为同样的原因而出现警告呢?于是我用下面的命令进行编译:       gcc -c myfilename.c

      这样编译的时候确实没有警告了。看来确实是c99中没有strdup和gethostname这两个函数了,我只是碰上了这两个函数,应该还有其他的函数会出现相同的问题。我现在还没有研究为什么c99中会没有这两个函数,而且编译器为什么不给这种情况的编译错误给出更多的信息。

      可能很多人会奇怪为什么我在开始的编译命令中要加上-std=c99选项,其实我也不想加的,而且我最初编译的时候也是没有加-std=c99的,但是我的程序中用到了很多for循环,而且都是这样写的

                for(int i = 0; i < maxloopnum; i++){

                                ..........

                }

       如果编译的时候不加-std=c99,就会出现:error:'for' loop initial declarations are only allowed in c99 mode   ,use option -std=c99 or -std=gun99 to compile your code.

       今天要写的就是这个东西了,看来有时间的话要看看c89和c99的标准和区别了!

最后

以上就是轻松乌龟为你收集整理的gcc下编译出现warning:implicit declaration of function 'strdup'和warning:implicit declaration of function 'gethostname'的全部内容,希望文章能够帮你解决gcc下编译出现warning:implicit declaration of function 'strdup'和warning:implicit declaration of function 'gethostname'所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部