2016-04-01 6 views
0

ich https://github.com/c9s/r3 Ich sehe die im Anschluss an die R3Route URL-Router in C und auf der GitHub Seite zu verwenden versuchen:R3Route URL Router in C

#include <r3/r3.h> 

// create a router tree with 10 children capacity (this capacity can grow dynamically) 
R3Node *n = r3_tree_create(10); 

int route_data = 3; 

// insert the R3Route path into the router tree 
r3_tree_insert_path(n, "/bar", &route_data); // ignore the length of path 

Könnte jemand bitte sagen Sie mir, was hier route_data ist? Und warum ist es 3?

Dank

Antwort

0

Ich habe gerade überprüft den Quellcode dieser lib und ich dies gefunden:

#define r3_tree_insert_path(n,p,d) r3_tree_insert_pathl_ex(n,p,strlen(p), NULL, d, NULL) 

wo d Ihr int = 3

Dies wird der neue Prototyp dieser Func

R3Node * r3_tree_insert_pathl_ex(R3Node *tree, const char *path, int path_len, R3Route * route, void * data, char **errstr) 

und in dieser Funktion werden Daten nur bei dieser Zeile

verwendet
if (route) { 
     route->data = data; 
} 

Route ist eine Struktur, wo Definition in r3.h

i im Code ohne Erfolg für diese int überall suchen finden könnte ..

Wenn Sie diese Struktur (R3Route) verwenden, ist es könnte sinnvoll sein, indem Sie ein Argument in Ihrer Struktur als void * übergeben, aber Sie sollten versuchen, Ihr int * um einen NULL zu ändern und versuchen, Ihr prog auszuführen. Ich bin nicht wirklich nützlich, weil ich diese Bibliothek nicht kenne, aber das ist alles, was ich gefunden habe. :)

+0

Vielen Dank für Ihre Antwort! Mit NULL funktioniert es gut, aber ich kann die Verwendung von void * Daten hier nicht sehen. Selbst wenn ich einen int übergeben habe, kann ich immer noch nicht herausfinden, wie ich seinen Wert zurückbekomme, wenn ich die Route mit einer URL abgleiche. – user3266083

+0

Es ist in R3Route als (R3Route *) x-> Daten definiert, wenn Sie es verwenden möchten, aber ich weiß wirklich nicht, ob es nützlich ist, diese Var zu verwenden :) –