c9s / r3

libr3 is a high-performance path dispatching library. It compiles your route paths into a prefix tree (trie). By using the constructed prefix trie in the start-up time, you may dispatch your routes with efficiency
http://c9s.github.com/r3/bench.html
MIT License
816 stars 83 forks source link

warning: initialization from incompatible pointer type #111

Closed silvioprog closed 6 years ago

silvioprog commented 6 years ago

Hello dudes.

Please see the following warning (I'm using CMake building system):

...
Scanning dependencies of target r3
[ 12%] Building C object src/CMakeFiles/r3.dir/node.c.o
[ 25%] Building C object src/CMakeFiles/r3.dir/edge.c.o
[ 37%] Building C object src/CMakeFiles/r3.dir/str.c.o
[ 50%] Building C object src/CMakeFiles/r3.dir/token.c.o
~/r3/src/token.c: In function ‘str_array_append’:
~/r3/src/token.c:24:34: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
     R3_VECTOR(r3_iovec_t) *tks = &l->tokens;
                                  ^
[ 62%] Building C object src/CMakeFiles/r3.dir/match_entry.c.o
[ 75%] Building C object src/CMakeFiles/r3.dir/slug.c.o
[ 87%] Building C object src/CMakeFiles/r3.dir/memory.c.o
[100%] Linking C static library libr3.a
[100%] Built target r3

it seems a cast is required at this line, however I'm not sure how to do that. :confused:

Edit:

The log above was generated using GCC 7.3.0, but the same warning is generated in CLang (6.0):

[ 41%] Building C object src/CMakeFiles/r3.dir/str.c.o
[ 50%] Building C object src/CMakeFiles/r3.dir/token.c.o
~/r3/src/token.c:24:28: warning: incompatible pointer
      types initializing 'struct (anonymous struct at
      ~/r3/src/token.c:24:5) *' with an expression of
      type 'struct (anonymous struct at
      ~/r3/include/str_array.h:16:3) *'
      [-Wincompatible-pointer-types]
    R3_VECTOR(r3_iovec_t) *tks = &l->tokens;
                           ^     ~~~~~~~~~~

OS:

Xubuntu 18.04 64 bits