为什么gcc会发出警告:隐式声明函数qsort_r?

时间:2013-12-19 15:05:49

标签: c gcc

我做include<stdlib.h>,其中给出了qsort_r。我使用gcc -std=c99 -O3 myfun.c -o myfun进行编译。

它编译,链接和运行良好。我不知道为什么我收到这个警告,这个警告的潜在风险是什么?

BTW,我的编译器是gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-1ubuntu1)

2 个答案:

答案 0 :(得分:4)

这样做是因为你使用-std=c99,在c99中的stdlib.h中没有qsort_r函数。

使用-std=gnu99使扩展程序可用,或在包含头文件之前将#define _GNU_SOURCE添加到源文件中。

答案 1 :(得分:2)

C99不支持

qsort_r。规范没有说明这一点。

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。重点是我的