Ik ben bezig met een programmaatje wat gebruik maakt van de system call clock_gettime die als tweede parameter een struct timespec nodig heeft. Code ziet er zo uit:
Dit compileerde ik met
wat de volgende foutmeldingen opleverde:
(regelnummers kloppen niet; het voorbeeld is alleen het stukje wat fout gaat; er staan nog wat dingen voor)
Na wat zoeken op internet blijkt dat de ANSI-standaard geen timespec ondersteunt, dus dan maar zonder -ansi:
En nou snap ik er niks meer van. Wat doe ik nou fout? Ik gebruik GCC 3.3.6
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #include <stdio.h> #include <time.h> #include <string.h> #include <stdlib.h> int main(int argc, char *argv[]) { const char* input = argv[1]; long long number = atoll(argv[3]); struct timespec before, after; clock_gettime(CLOCK_REALTIME, &before); long long i; for (i = 0; i < number; i++) { ; } clock_gettime(CLOCK_REALTIME, &after); long time_taken = (after.tv_nsec - before.tv_nsec); } |
Dit compileerde ik met
code:
1
| gcc -ansi -o exercise1 exercise.c |
wat de volgende foutmeldingen opleverde:
code:
1
2
3
4
5
6
7
| gcc -ansi -o exercise1 exercise1.c exercise1.c: In function `main': exercise1.c:59: error: storage size of `before' isn't known exercise1.c:59: error: storage size of `after' isn't known exercise1.c:60: error: `CLOCK_REALTIME' undeclared (first use in this function) exercise1.c:60: error: (Each undeclared identifier is reported only once exercise1.c:60: error: for each function it appears in.) |
(regelnummers kloppen niet; het voorbeeld is alleen het stukje wat fout gaat; er staan nog wat dingen voor)
Na wat zoeken op internet blijkt dat de ANSI-standaard geen timespec ondersteunt, dus dan maar zonder -ansi:
code:
1
2
3
4
5
| gcc -o exercise1 exercise1.c /tmp/ccynCQEJ.o: In function `main': exercise1.c:(.text+0x251): undefined reference to `clock_gettime' exercise1.c:(.text+0x2a4): undefined reference to `clock_gettime' collect2: ld returned 1 exit status |
En nou snap ik er niks meer van. Wat doe ik nou fout? Ik gebruik GCC 3.3.6