Giter Club home page Giter Club logo

another-c-library's People

Contributors

acurtis-evi avatar chrispyfrey avatar contactandyc avatar dancrtis avatar elibradshaw avatar isaacdreier avatar jcurtis06 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

another-c-library's Issues

conflicting types for timer_t 2_timing/10_timer

Hey, this guide is amazing.

Just came across the following error in 2_timing/10_timer.

Linux users will suffer this error, but OS X users won't see it:
https://unix.stackexchange.com/questions/194480/why-is-timer-t-defined-in-time-h-on-linux-but-not-os-x

Changing timer_t to my_timer_t is one fix.

:~/another-c-library/illustrations/2_timing/10_timer$ make
gcc -O3 timer.c test_timer.c -o test_timer
In file included from /usr/include/time.h:47,
                 from timer.c:20:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:7:19: error: conflicting types for ‘timer_t’
    7 | typedef __timer_t timer_t;
      |                   ^~~~~~~
In file included from timer.c:17:
timer.h:21:24: note: previous declaration of ‘timer_t’ was here
   21 | typedef struct timer_s timer_t;
      |                        ^~~~~~~
timer.c:30:10: error: conflicting types for ‘timer_init’
   30 | timer_t *timer_init(int repeat) {
      |          ^~~~~~~~~~
In file included from timer.c:17:
timer.h:28:10: note: previous declaration of ‘timer_init’ was here
   28 | timer_t *timer_init(int repeat);
      |          ^~~~~~~~~~
timer.c: In function ‘timer_init’:
timer.c:32:4: error: request for member ‘repeat’ in something not a structure or union
   32 |   t->repeat = repeat;
      |    ^~
timer.c:33:4: error: request for member ‘base’ in something not a structure or union
   33 |   t->base = t->time_spent = t->start_time = 0;
      |    ^~
timer.c:33:14: error: request for member ‘time_spent’ in something not a structure or union
   33 |   t->base = t->time_spent = t->start_time = 0;
      |              ^~
timer.c:33:30: error: request for member ‘start_time’ in something not a structure or union
   33 |   t->base = t->time_spent = t->start_time = 0;
      |                              ^~
timer.c: At top level:
timer.c:37:6: error: conflicting types for ‘timer_destroy’
   37 | void timer_destroy(timer_t *t) {
      |      ^~~~~~~~~~~~~
In file included from timer.c:17:
timer.h:31:6: note: previous declaration of ‘timer_destroy’ was here
   31 | void timer_destroy(timer_t *t);
      |      ^~~~~~~~~~~~~
timer.c:42:5: error: conflicting types for ‘timer_get_repeat’
   42 | int timer_get_repeat(timer_t *t) {
      |     ^~~~~~~~~~~~~~~~
In file included from timer.c:17:
timer.h:34:5: note: previous declaration of ‘timer_get_repeat’ was here
   34 | int timer_get_repeat(timer_t *t);
      |     ^~~~~~~~~~~~~~~~
timer.c: In function ‘timer_get_repeat’:
timer.c:43:11: error: request for member ‘repeat’ in something not a structure or union
   43 |   return t->repeat;
      |           ^~
timer.c: At top level:
timer.c:47:6: error: conflicting types for ‘timer_set_repeat’
   47 | void timer_set_repeat(timer_t *t, int repeat) {
      |      ^~~~~~~~~~~~~~~~
In file included from timer.c:17:
timer.h:37:6: note: previous declaration of ‘timer_set_repeat’ was here
   37 | void timer_set_repeat(timer_t *t, int repeat);
      |      ^~~~~~~~~~~~~~~~
timer.c: In function ‘timer_set_repeat’:
timer.c:48:4: error: request for member ‘repeat’ in something not a structure or union
   48 |   t->repeat = repeat;
      |    ^~
timer.c: At top level:
timer.c:52:6: error: conflicting types for ‘timer_subtract’
   52 | void timer_subtract(timer_t *t, timer_t *sub) {
      |      ^~~~~~~~~~~~~~
In file included from timer.c:17:
timer.h:40:6: note: previous declaration of ‘timer_subtract’ was here
   40 | void timer_subtract(timer_t *t, timer_t *sub);
      |      ^~~~~~~~~~~~~~
timer.c: In function ‘timer_subtract’:
timer.c:53:4: error: request for member ‘base’ in something not a structure or union
   53 |   t->base -= (sub->time_spent+sub->base);
      |    ^~
timer.c:53:18: error: request for member ‘time_spent’ in something not a structure or union
   53 |   t->base -= (sub->time_spent+sub->base);
      |                  ^~
timer.c:53:34: error: request for member ‘base’ in something not a structure or union
   53 |   t->base -= (sub->time_spent+sub->base);
      |                                  ^~
timer.c: At top level:
timer.c:56:6: error: conflicting types for ‘timer_add’
   56 | void timer_add(timer_t *t, timer_t *add) {
      |      ^~~~~~~~~
In file included from timer.c:17:
timer.h:42:6: note: previous declaration of ‘timer_add’ was here
   42 | void timer_add(timer_t *t, timer_t *add);
      |      ^~~~~~~~~
timer.c: In function ‘timer_add’:
timer.c:57:4: error: request for member ‘base’ in something not a structure or union
   57 |   t->base += (add->time_spent+add->base);
      |    ^~
timer.c:57:18: error: request for member ‘time_spent’ in something not a structure or union
   57 |   t->base += (add->time_spent+add->base);
      |                  ^~
timer.c:57:34: error: request for member ‘base’ in something not a structure or union
   57 |   t->base += (add->time_spent+add->base);
      |                                  ^~
timer.c: At top level:
timer.c:60:6: error: conflicting types for ‘timer_start’
   60 | void timer_start(timer_t *t) {
      |      ^~~~~~~~~~~
In file included from timer.c:17:
timer.h:45:6: note: previous declaration of ‘timer_start’ was here
   45 | void timer_start(timer_t *t);
      |      ^~~~~~~~~~~
timer.c: In function ‘timer_start’:
timer.c:63:4: error: request for member ‘start_time’ in something not a structure or union
   63 |   t->start_time = (tv.tv_sec * 1000000) + tv.tv_usec;
      |    ^~
timer.c: At top level:
timer.c:66:6: error: conflicting types for ‘timer_stop’
   66 | void timer_stop(timer_t *t) {
      |      ^~~~~~~~~~
In file included from timer.c:17:
timer.h:48:6: note: previous declaration of ‘timer_stop’ was here
   48 | void timer_stop(timer_t *t);
      |      ^~~~~~~~~~
timer.c: In function ‘timer_stop’:
timer.c:70:9: error: request for member ‘start_time’ in something not a structure or union
   70 |   v -= t->start_time;
      |         ^~
timer.c:71:4: error: request for member ‘time_spent’ in something not a structure or union
   71 |   t->time_spent += v;
      |    ^~
timer.c: At top level:
timer.c:74:8: error: conflicting types for ‘timer_ns’
   74 | double timer_ns(timer_t *t) {
      |        ^~~~~~~~
In file included from timer.c:17:
timer.h:54:8: note: previous declaration of ‘timer_ns’ was here
   54 | double timer_ns(timer_t *t);
      |        ^~~~~~~~
timer.c: In function ‘timer_ns’:
timer.c:75:15: error: request for member ‘repeat’ in something not a structure or union
   75 |   double r = t->repeat * 1.0;
      |               ^~
timer.c:76:16: error: request for member ‘time_spent’ in something not a structure or union
   76 |   double ts = t->time_spent + t->base;
      |                ^~
timer.c:76:32: error: request for member ‘base’ in something not a structure or union
   76 |   double ts = t->time_spent + t->base;
      |                                ^~
timer.c: At top level:
timer.c:80:8: error: conflicting types for ‘timer_us’
   80 | double timer_us(timer_t *t) {
      |        ^~~~~~~~
In file included from timer.c:17:
timer.h:55:8: note: previous declaration of ‘timer_us’ was here
   55 | double timer_us(timer_t *t);
      |        ^~~~~~~~
timer.c: In function ‘timer_us’:
timer.c:81:15: error: request for member ‘repeat’ in something not a structure or union
   81 |   double r = t->repeat * 1.0;
      |               ^~
timer.c:82:16: error: request for member ‘time_spent’ in something not a structure or union
   82 |   double ts = t->time_spent + t->base;
      |                ^~
timer.c:82:32: error: request for member ‘base’ in something not a structure or union
   82 |   double ts = t->time_spent + t->base;
      |                                ^~
timer.c: At top level:
timer.c:86:8: error: conflicting types for ‘timer_ms’
   86 | double timer_ms(timer_t *t) {
      |        ^~~~~~~~
In file included from timer.c:17:
timer.h:56:8: note: previous declaration of ‘timer_ms’ was here
   56 | double timer_ms(timer_t *t);
      |        ^~~~~~~~
timer.c: In function ‘timer_ms’:
timer.c:87:15: error: request for member ‘repeat’ in something not a structure or union
   87 |   double r = t->repeat * 1.0;
      |               ^~
timer.c:88:16: error: request for member ‘time_spent’ in something not a structure or union
   88 |   double ts = t->time_spent + t->base;
      |                ^~
timer.c:88:32: error: request for member ‘base’ in something not a structure or union
   88 |   double ts = t->time_spent + t->base;
      |                                ^~
timer.c: At top level:
timer.c:92:8: error: conflicting types for ‘timer_sec’
   92 | double timer_sec(timer_t *t) {
      |        ^~~~~~~~~
In file included from timer.c:17:
timer.h:57:8: note: previous declaration of ‘timer_sec’ was here
   57 | double timer_sec(timer_t *t);
      |        ^~~~~~~~~
timer.c: In function ‘timer_sec’:
timer.c:93:15: error: request for member ‘repeat’ in something not a structure or union
   93 |   double r = t->repeat * 1.0;
      |               ^~
timer.c:94:16: error: request for member ‘time_spent’ in something not a structure or union
   94 |   double ts = t->time_spent + t->base;
      |                ^~
timer.c:94:32: error: request for member ‘base’ in something not a structure or union
   94 |   double ts = t->time_spent + t->base;
      |                                ^~
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:130,
                 from /usr/include/stdlib.h:394,
                 from test_timer.c:20:
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h:7:19: error: conflicting types for ‘timer_t’
    7 | typedef __timer_t timer_t;
      |                   ^~~~~~~
In file included from test_timer.c:17:
timer.h:21:24: note: previous declaration of ‘timer_t’ was here
   21 | typedef struct timer_s timer_t;
      |                        ^~~~~~~
test_timer.c: In function ‘main’:
test_timer.c:36:28: warning: initialization of ‘void **’ from incompatible pointer type ‘timer_t *’ {aka ‘struct timer_s *’} [-Wincompatible-pointer-types]
   36 |   timer_t *overall_timer = timer_init(repeat_test);
      |                            ^~~~~~~~~~
test_timer.c:41:55: warning: passing argument 1 of ‘timer_get_repeat’ from incompatible pointer type [-Wincompatible-pointer-types]
   41 |     timer_t *copy_timer = timer_init(timer_get_repeat(overall_timer));
      |                                                       ^~~~~~~~~~~~~
      |                                                       |
      |                                                       void **
In file included from test_timer.c:17:
timer.h:34:31: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   34 | int timer_get_repeat(timer_t *t);
      |                      ~~~~~~~~~^
test_timer.c:41:27: warning: initialization of ‘void **’ from incompatible pointer type ‘timer_t *’ {aka ‘struct timer_s *’} [-Wincompatible-pointer-types]
   41 |     timer_t *copy_timer = timer_init(timer_get_repeat(overall_timer));
      |                           ^~~~~~~~~~
test_timer.c:42:17: warning: passing argument 1 of ‘timer_start’ from incompatible pointer type [-Wincompatible-pointer-types]
   42 |     timer_start(copy_timer);
      |                 ^~~~~~~~~~
      |                 |
      |                 void **
In file included from test_timer.c:17:
timer.h:45:27: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   45 | void timer_start(timer_t *t);
      |                  ~~~~~~~~~^
test_timer.c:46:16: warning: passing argument 1 of ‘timer_stop’ from incompatible pointer type [-Wincompatible-pointer-types]
   46 |     timer_stop(copy_timer);
      |                ^~~~~~~~~~
      |                |
      |                void **
In file included from test_timer.c:17:
timer.h:48:26: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   48 | void timer_stop(timer_t *t);
      |                 ~~~~~~~~~^
test_timer.c:48:55: warning: passing argument 1 of ‘timer_get_repeat’ from incompatible pointer type [-Wincompatible-pointer-types]
   48 |     timer_t *test_timer = timer_init(timer_get_repeat(overall_timer));
      |                                                       ^~~~~~~~~~~~~
      |                                                       |
      |                                                       void **
In file included from test_timer.c:17:
timer.h:34:31: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   34 | int timer_get_repeat(timer_t *t);
      |                      ~~~~~~~~~^
test_timer.c:48:27: warning: initialization of ‘void **’ from incompatible pointer type ‘timer_t *’ {aka ‘struct timer_s *’} [-Wincompatible-pointer-types]
   48 |     timer_t *test_timer = timer_init(timer_get_repeat(overall_timer));
      |                           ^~~~~~~~~~
test_timer.c:49:17: warning: passing argument 1 of ‘timer_start’ from incompatible pointer type [-Wincompatible-pointer-types]
   49 |     timer_start(test_timer);
      |                 ^~~~~~~~~~
      |                 |
      |                 void **
In file included from test_timer.c:17:
timer.h:45:27: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   45 | void timer_start(timer_t *t);
      |                  ~~~~~~~~~^
test_timer.c:54:16: warning: passing argument 1 of ‘timer_stop’ from incompatible pointer type [-Wincompatible-pointer-types]
   54 |     timer_stop(test_timer);
      |                ^~~~~~~~~~
      |                |
      |                void **
In file included from test_timer.c:17:
timer.h:48:26: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   48 | void timer_stop(timer_t *t);
      |                 ~~~~~~~~~^
test_timer.c:55:20: warning: passing argument 1 of ‘timer_subtract’ from incompatible pointer type [-Wincompatible-pointer-types]
   55 |     timer_subtract(test_timer, copy_timer);
      |                    ^~~~~~~~~~
      |                    |
      |                    void **
In file included from test_timer.c:17:
timer.h:40:30: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   40 | void timer_subtract(timer_t *t, timer_t *sub);
      |                     ~~~~~~~~~^
test_timer.c:55:32: warning: passing argument 2 of ‘timer_subtract’ from incompatible pointer type [-Wincompatible-pointer-types]
   55 |     timer_subtract(test_timer, copy_timer);
      |                                ^~~~~~~~~~
      |                                |
      |                                void **
In file included from test_timer.c:17:
timer.h:40:42: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   40 | void timer_subtract(timer_t *t, timer_t *sub);
      |                                 ~~~~~~~~~^~~
test_timer.c:56:15: warning: passing argument 1 of ‘timer_add’ from incompatible pointer type [-Wincompatible-pointer-types]
   56 |     timer_add(overall_timer, test_timer);
      |               ^~~~~~~~~~~~~
      |               |
      |               void **
In file included from test_timer.c:17:
timer.h:42:25: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   42 | void timer_add(timer_t *t, timer_t *add);
      |                ~~~~~~~~~^
test_timer.c:56:30: warning: passing argument 2 of ‘timer_add’ from incompatible pointer type [-Wincompatible-pointer-types]
   56 |     timer_add(overall_timer, test_timer);
      |                              ^~~~~~~~~~
      |                              |
      |                              void **
In file included from test_timer.c:17:
timer.h:42:37: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   42 | void timer_add(timer_t *t, timer_t *add);
      |                            ~~~~~~~~~^~~
test_timer.c:59:47: warning: passing argument 1 of ‘timer_ns’ from incompatible pointer type [-Wincompatible-pointer-types]
   59 |     printf( "time_spent: %0.4fns\n", timer_ns(test_timer) );
      |                                               ^~~~~~~~~~
      |                                               |
      |                                               void **
In file included from test_timer.c:17:
timer.h:54:26: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   54 | double timer_ns(timer_t *t);
      |                 ~~~~~~~~~^
test_timer.c:61:19: warning: passing argument 1 of ‘timer_destroy’ from incompatible pointer type [-Wincompatible-pointer-types]
   61 |     timer_destroy(test_timer);
      |                   ^~~~~~~~~~
      |                   |
      |                   void **
In file included from test_timer.c:17:
timer.h:31:29: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   31 | void timer_destroy(timer_t *t);
      |                    ~~~~~~~~~^
test_timer.c:62:19: warning: passing argument 1 of ‘timer_destroy’ from incompatible pointer type [-Wincompatible-pointer-types]
   62 |     timer_destroy(copy_timer);
      |                   ^~~~~~~~~~
      |                   |
      |                   void **
In file included from test_timer.c:17:
timer.h:31:29: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   31 | void timer_destroy(timer_t *t);
      |                    ~~~~~~~~~^
test_timer.c:65:53: warning: passing argument 1 of ‘timer_ns’ from incompatible pointer type [-Wincompatible-pointer-types]
   65 |   printf( "overall time_spent: %0.4fns\n", timer_ns(overall_timer) );
      |                                                     ^~~~~~~~~~~~~
      |                                                     |
      |                                                     void **
In file included from test_timer.c:17:
timer.h:54:26: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   54 | double timer_ns(timer_t *t);
      |                 ~~~~~~~~~^
test_timer.c:66:17: warning: passing argument 1 of ‘timer_destroy’ from incompatible pointer type [-Wincompatible-pointer-types]
   66 |   timer_destroy(overall_timer);
      |                 ^~~~~~~~~~~~~
      |                 |
      |                 void **
In file included from test_timer.c:17:
timer.h:31:29: note: expected ‘timer_t *’ {aka ‘struct timer_s *’} but argument is of type ‘void **’
   31 | void timer_destroy(timer_t *t);
      |                    ~~~~~~~~~^
make: *** [Makefile:4: test_timer] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.