当我使用malloc
在 C 程序中,我收到警告:
warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
然后我可以包括<malloc.h>
or <stdlib.h>
摆脱warning
尽管没有它也能工作。
所以我想知道这些标头和哪个标头有什么区别gcc
当我不包含任何内容时链接?
(我在用着ubuntu 12.04 64-bit
with gcc 4.6.3
)
The <malloc.h>
header 已被弃用(并且非常特定于 Linux,它定义了非标准功能类似于商城信息(3)). Use <stdlib.h>
相反,如果你只是需要分配(3)和相关的标准功能(例如free
, calloc
, realloc
....)。请注意<stdlib.h>
定义为C89(及以后的)标准,但不是<malloc.h>
调查/usr/include/malloc.h
你会发现有一些非标准函数(例如malloc_stats(3)等...) - 另外malloc
....
And gcc
不要链接头文件,而是链接库。阅读莱文关于链接器和加载器了解更多。
如果您不包含任何标头(并且不明确声明malloc
你自己,这将是一个坏主意),malloc
隐式声明为返回一些int
值(这是错误的)。我确实邀请您至少通过-Wall
标记为gcc
使用时。
你也可能会通过-v
to gcc
了解所涉及的实际程序:cc1
编译器是否正确(生成汇编代码),as
汇编器,ld
链接器,以及collect2调用链接器的内部实用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)