读书人

为什么小弟我有些函数和宏定义没法使用

发布时间: 2014-03-14 00:10:54 作者: rapoo

为什么我有些函数和宏定义没法使用?
环境如下:

Linux forhu-debian 3.2.0-4-686-pae #1 SMP Debian 3.2.51-1 i686 GNU/Linux
gcc version 4.7.2 (Debian 4.7.2-5)


我发现有些函数没法使用,比如说我要使用nanosleep,已经include了time.h了,但是编译器报错如下:
test.c:17:18: error: storage size of ‘req’ isn’t known
test.c:17:22: error: storage size of ‘rem’ isn’t known
test.c:38:3: warning: implicit declaration of function ‘nanosleep’ [-Wimplicit-function-declaration]
make: *** [main.o] Error 1


但是我的代码如下:
  6 #include <time.h>
...
17 struct timespec req,rem;
18 req.tv_sec=0;
19 req.tv_nsec=10000000;
...
38 nanosleep(&req,&rem);


等等诸如此类的问题,我看头文件,它需要一个宏定义:
__USE_POSIX199309
还有其他的情况我也碰到:
__USE_BSD
__USE_MISC

请问各位,我碰到这种情况该怎么解决?
[解决办法]
难道楼主用了gcc -std=c89或者 gcc -std=c99或者gcc -ansi
试试改为
gcc -std=gnu99
[解决办法]
引用time.h时这样引用就ok了


#define __need_timespec
#include <time.h>

读书人网 >UNIXLINUX

热点推荐