为啥 gcc 给出警告:函数 qsort_r 的隐式声明?
Posted
技术标签:
【中文标题】为啥 gcc 给出警告:函数 qsort_r 的隐式声明?【英文标题】:Why gcc gives warning: implicit declaration of function qsort_r?为什么 gcc 给出警告:函数 qsort_r 的隐式声明? 【发布时间】:2013-12-19 15:05:48 【问题描述】:我在include<stdlib.h>
给出了 qsort_r。我使用gcc -std=c99 -O3 myfun.c -o myfun
编译。
它编译、链接和运行良好。我不知道为什么会收到此警告以及此警告的潜在风险是什么?
顺便说一句,我的编译器是gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-1ubuntu1)
【问题讨论】:
【参考方案1】:这样做是因为你使用了 -std=c99
,c99 的 stdlib.h 中没有 qsort_r 函数。
使用-std=gnu99
使扩展可用,或在包含头文件之前将#define _GNU_SOURCE
添加到源文件。
【讨论】:
【参考方案2】:qsort_r
不受 C99 支持。规范对此只字未提。
Language Standards Supported by GCC:
默认情况下,GCC 会为 C 语言提供一些扩展,这些扩展在极少数情况下会与 C 标准冲突1。请参阅 C 语言系列的扩展。使用上面列出的 -std 选项将禁用与所选 C 标准版本冲突的这些扩展。您还可以使用 -std=gnu89(对于带有 GNU 扩展的 C89)或 -std=gnu99(对于带有 GNU 扩展的 C99)显式选择 C 语言的扩展版本。如果没有给出 C 语言方言选项,则默认值为 -std=gnu89;当 C99 支持完成时,这将在将来的某个版本中更改为 -std=gnu99。某些属于 C99 标准的功能在 C89 模式下被接受为扩展。
1。重点是我的
【讨论】:
以上是关于为啥 gcc 给出警告:函数 qsort_r 的隐式声明?的主要内容,如果未能解决你的问题,请参考以下文章