implicit declaration of function ‘settimeofday’ 解决办法

问题描述

在编写一个改变linux系统时钟的函数中用到了settimeofday这个函数。但是再make的时候出现了以下错误:

 warning: implicit declaration of function ‘settimeofday’; did you mean ‘gettimeofday’? [-Wimplicit-function-declaration]

什么原因呐?搜了好久,都没有正确的解决方法。
无意间,在函数的说明中查到了以下说明:

NOTE

      The  prototype  for settimeofday and the defines for timercmp, timeris-
      set, timerclear, timeradd, timersub are (since glibc2.2.2) only	avail-
      able  if	 _BSD_SOURCE  is defined (either explicitly, or implicitly, by
      not defining _POSIX_SOURCE or compiling with the -ansi flag).

就是说要么显式定义或者隐式定义_BSD_SOURCE,或者在写makefile的时候在CFLAGS添加上-ansi语句。
但是不能直接在c文件中这么做,可以在makefile中添加-D_BSD_SOURCE,但是回提示别的警告。告诉你_BSD_SOURCE已经废弃之类的。

在看了以下文章之后,我改成了-D_GNU_SOURCE就OK了。

原因追踪

为什么要定义_BSD_SOURCE?这些文件应该涉及到一些关于BSD系统保留下函数、类型等定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值