我在程序中使用clock_gettime。我试过包括以及,但都没有。我还向编译器参数添加了-lrt,但仍然出现相同的错误。

这是开

CentOS Linux release 7.2.1511 (Core)
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
GNU ld version 2.23.52.0.1-55.el7 20130226
ldd (GNU libc) 2.17

编译器输出:
gcc -o main packet.c connect.c transport.c accept.c main.c close.c util.c receive.c send.c congestion.c -Wall -g -std=c99 -lrt
util.c: In function ‘millis’:
util.c:42:21: error: storage size of ‘t’ isn’t known
     struct timespec t;
                     ^
util.c:43:5: warning: implicit declaration of function ‘clock_gettime’ [-Wimplicit-function-declaration]
     clock_gettime(CLOCK_MONOTONIC_RAW, &t);
     ^
util.c:43:19: error: ‘CLOCK_MONOTONIC_RAW’ undeclared (first use in this function)
     clock_gettime(CLOCK_MONOTONIC_RAW, &t);
               ^

生成文件
CFLAGS = -Wall -g -std=c99
LIBS = -lrt

# Should be equivalent to your list of C files, if you don't build selectively
SRC=$(wildcard *.c)

main: $(SRC)
    gcc -o $@ $^ $(CFLAGS) $(LIBS)

util.h的顶部
#ifndef UTILS_438_H_
#define UTILS_438_H_

#include "const.h"
#include "data.h"
#include "transport.h"

#include <time.h>

util.c的顶部
#include "util.h"

#include <time.h>
#include <stdio.h>
#include <string.h>

请让我知道是否可以提供更多信息以帮助回答此问题

最佳答案

在包含标题(<time.h>)之前,请执行

#define _POSIX_C_SOURCE 199309L

http://man7.org/linux/man-pages/man2/clock_gettime.2.html



http://man7.org/linux/man-pages/man7/feature_test_macros.7.html

09-08 04:15